On 2023-03-30 9:26 p.m., Pedro Alves wrote: > So teaching DWARF to specify the location of the return value is actually > orthogonal > here -- we need to be able to distinguish regular C array from vector arrays > for > other reasons too, specifically, the types are different at the language > level. > So vector-ness should indeed be a property of the type.
Replying to myself to add more to this point, as it goes beyond just pointer decay. See here: https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html For example: "The types defined in this manner can be used with a subset of normal C operations. Currently, GCC allows using the following operators on these types: +, -, *, /, unary minus, ^, |, &, ~, %. The operations behave like C++ valarrays. Addition is defined as the addition of the corresponding elements of the operands. For example, in the code below, each of the 4 elements in a is added to the corresponding 4 elements in b and the resulting vector is stored in c." Should be obvious that these operations don't behave the same as normal C arrays. Turns out GDB supports all these operations on vectors since 2010 (git 7346b668d73f, and gdb.base/gnu_vector.exp testcase, if you're curious), and I managed to forget about all that until I read the GCC page above. :-) Pedro Alves -- Dwarf-discuss mailing list Dwarf-discuss@lists.dwarfstd.org https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss