https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112337
--- Comment #8 from Alex Coplan <acoplan at gcc dot gnu.org> --- (In reply to Vladimir Makarov from comment #7) > (In reply to Alex Coplan from comment #6) > > Confirmed. Here's a slightly cleaned up reproducer that doesn't warn: > > > > #pragma GCC arm "arm_mve_types.h" > > int32x4_t h(void *p) { return __builtin_mve_vldrwq_sv4si(p); } > > void g(int32x4_t); > > void f(int, int, int, short, int *p) { > > int *bias = p; > > for (;;) { > > int32x4_t d = h(bias); > > bias += 4; > > g(d); > > } > > } > > > > ICEs with -O2 -march=armv8.1-m.main+mve -mfloat-abi=hard on the trunk. > > Looking at the dump, I can guess INC/DEC operand is not a reg after IRA > temporary transformation. It can be fixed in arm.cc by checking that the > operand is reg instead of using the assert but it could be wrong because the > documentation says the operand should be a reg. Also such solution would > not work for possible problem on other targets. > > Could you provide me preprocessed test file. I'll try to find a solution as > soon as possible. The quoted code above is a preprocessed testcase. FWIW, https://gcc.gnu.org/onlinedocs/gccint/Incdec.html seems to document that mem inside pre_dec is valid. If that's no longer the case, we should update the documentation (and then IRA needs fixing). If the documentation is correct, then we need to fix this in arm.cc.