https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112337
Vladimir Makarov <vmakarov at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vmakarov at gcc dot gnu.org --- Comment #7 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- (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.