[Dwarf-discuss] ISSUE: CPU vector types.

Pedro Alves pedro@palves.net
Thu Mar 30 22:23:17 GMT 2023


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


More information about the Dwarf-discuss mailing list