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? 2017-11-22 Jakub Jelinek <ja...@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