This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix dwarf2out ICE on VEC_SERIES rtl (PR debug/83034)


On Wed, 22 Nov 2017, Jakub Jelinek wrote:

> Hi!
> 
> On this testcase we get (vec_series (reg: ebp) (const_int 1))
> in NOTE_INSN_CALL_ARG_LOCATION because the vector isn't live anywhere else.
> Right now we do not have a good story for providing values of optimized
> out vectors, so just punting on it like on other VEC_* codes is sufficient.
> 
> For the future, the question is how to represent vectors, they could be
> represented e.g. using typed DWARF stack, but then the stack could have
> really large values, or by representing them as arrays of elements using
> DW_OP_piece, which probably current consumers would grok already now,
> but the debug info for it could be larger (say:
> typedef int V __attribute__((vector_size (32)));
> V bar (V, V);
> 
> V
> foo (V a, V b)
> {
>   V c = a + b;
>   return bar (a, b) + a;
> }
> to represent c we either have typed stack ... DW_OP_plus DW_OP_stack_value,
> or ( ... DW_OP_plus DW_OP_stack_value DW_OP_piece ... ) 8x
> 
> Anyway, for now I think this is enough.  Bootstrapped/regtested on
> x86_64-linux and i686-linux, ok for trunk?

Ok.

Richard.

> 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
> 
> 	PR debug/83034
> 	* dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.
> 
> 	* gcc.dg/pr83034.c: New test.
> 
> --- gcc/dwarf2out.c.jj	2017-11-21 08:56:52.000000000 +0100
> +++ gcc/dwarf2out.c	2017-11-21 16:08:34.397197696 +0100
> @@ -15605,6 +15605,7 @@ mem_loc_descriptor (rtx rtl, machine_mod
>      case VEC_SELECT:
>      case VEC_CONCAT:
>      case VEC_DUPLICATE:
> +    case VEC_SERIES:
>      case UNSPEC:
>      case HIGH:
>      case FMA:
> --- gcc/testsuite/gcc.dg/pr83034.c.jj	2017-11-21 16:07:13.886253031 +0100
> +++ gcc/testsuite/gcc.dg/pr83034.c	2017-11-21 16:03:23.000000000 +0100
> @@ -0,0 +1,12 @@
> +/* PR debug/83034 */
> +/* { dg-do compile } */
> +/* { dg-options "-funroll-loops -Ofast -g" } */
> +
> +__attribute__((__simd__)) float expf (float);
> +
> +void
> +foo (float *a, int x)
> +{
> +  for (; x; x++)
> +    a[x] = expf (x);
> +}
> 
> 	Jakub
> 
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]