https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120347
Bug ID: 120347 Summary: invalid arm32/thumb assembly output Product: gcc Version: 15.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: arnd at linaro dot org Target Milestone: --- During build testing on the Linux kernel, I came across a new failure with gcc-15.1 producing a single invalid instruction, in exactly one file/function: /tmp/ccGz2dNz.s: Assembler messages: /tmp/ccGz2dNz.s:681: Error: registers may not be the same -- `str r1,[r1],#4' make[8]: *** [scripts/Makefile.build:195: drivers/gpu/drm/radeon/radeon_test.o] Error 1 I managed to produce a reduced test case with the same output: void *end; void **start; void main(void) { for (; end; start++) { if (*start) return; *start = start; } } $ arm-linux-gcc-15.1 -O2 -march=armv7-a -mthumb test.c -c /tmp/ccjHgo9c.s:43: Error: registers may not be the same -- `str r3,[r3],#4' See https://godbolt.org/z/4v41cnsbY for reference. The test case also reproduces on current 'trunk' but not on gcc-14.2 or earlier.