https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96139
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Last reconfirmed| |2020-07-10 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- The issue is that 'val' has <vector_type 0x7ffff69f8c78 vui64_t type <integer_type 0x7ffff6bc97e0 long unsigned int public unsigned DI size <integer_cst 0x7ffff6bc7030 constant 64> unit-size <integer_cst 0x7ffff6bc7048 constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff6bc97e0 precision:64 min <integer_cst 0x7ffff6bc7300 0> max <integer_cst 0x7ffff6bb85a0 18446744073709551615> pointer_to_this <pointer_type 0x7ffff6bd7e70>> unsigned V2DI size <integer_cst 0x7ffff6bc7078 type <integer_type 0x7ffff6bc90a8 bitsizetype> constant 128> unit-size <integer_cst 0x7ffff6bc7090 type <integer_type 0x7ffff6bc9000 sizetype> constant 16> align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff6cae000 nunits:2> so the error is in processing of the __vector typedef, not in the element extract. IIRC __vector is a ppc specific keyword thus target code is likely the culprit here. It's also wrong-code for TBAA btw, accessing a unsigned long long[] via ui64_t would be invalid.