https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100793
Roger Sayle <roger at nextmovesoftware dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-12-29 Ever confirmed|0 |1 Keywords|error-recovery, |ice-on-valid-code |ice-on-invalid-code | Status|UNCONFIRMED |NEW CC| |roger at nextmovesoftware dot com --- Comment #1 from Roger Sayle <roger at nextmovesoftware dot com> --- A slight variation on the original, reveals that this issue is slightly more serious than it first appears. void f4() { int a; register int __attribute__((vector_size(16))) b __asm("xmm1"); b[a] = a; asm("" : "+v"(b)); } ICEs without issuing any error/warning at -O2 (so not an error recovery issue), but also compiles fine if "-mavx2" is specified (so is valid for some architectures). This is related to PR middle-end/80162, indeed the test case testsuite/c-c++-common/pr80162-2.c ICEs if compiled without -mavx2. Variable index addressing of a vector register can be implemented, without hardware support, by spilling the register to memory, but the problematic assert insist that this ARRAY_REF is indexed by a CONST_INT.