https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119730
Bug ID: 119730 Summary: Unexpected -Wclobbered with -O2 and local register variables Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: florian.lugou at provenrun dot com Target Milestone: --- On Ubuntu 24.04, tested with aarch64-none-elf GCC 14.2.Rel1 and 15.0.1. $ cat mwe.i typedef long long jmp_buf[22]; void longjmp (jmp_buf __jmpb, int __retval) __attribute__ ((__noreturn__)); int setjmp (jmp_buf __jmpb); static inline void f(void) { register int x0 asm ("x0") = 0; asm volatile ("svc #0" : : "r" (x0) : "memory"); } void g(int); static jmp_buf jmp; void run_test_case(void) { f(); int sj = setjmp(jmp); if (sj != 0){ g(0); } else { g(0); } } $ aarch64-none-elf-gcc -O2 -Wclobbered -v -S mwe.i Using built-in specs. Target: aarch64-none-elf Configured with: ../configure --target=aarch64-none-elf --with-newlib --disable-gdbtk --disable-libstdcxx --enable-languages=c --disable-libssp Thread model: single Supported LTO compression algorithms: zlib zstd gcc version 15.0.1 20250411 (experimental) (GCC) cc1 -fpreprocessed mwe.i -quiet -dumpbase mwe.i -dumpbase-ext .i -mlittle-endian -mabi=lp64 -O2 -Wclobbered -version -o mwe.s GNU C23 (GCC) version 15.0.1 20250411 (experimental) (aarch64-none-elf) compiled by GNU C version 13.3.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: 7f750bb20cb71bdbabbe43664562539a mwe.i: In function ‘run_test_case’: mwe.i:10:16: warning: variable ‘x0’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered] 10 | register int x0 asm ("x0") = 0; | ^~