https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95021
Bug ID: 95021 Summary: [10/11 Regression] Bogus -Wclobbered warning Product: gcc Version: 10.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com Target Milestone: --- On Linux/x86-64, GCC 10 and 11 give [hjl@gnu-skx-1 creduce-1]$ cat foo.i typedef long long a; struct __jmp_buf_tag { }; typedef struct __jmp_buf_tag sigjmp_buf[1]; sigjmp_buf jmp_buf; int __sigsetjmp (sigjmp_buf, int); typedef struct { a target; } b; extern a *target_p; b *c; extern void e (a); void d(void) { if (__sigsetjmp(jmp_buf, 1)) { a target = *target_p; c->target = target; e(target); } } [hjl@gnu-skx-1 creduce-1]$ /usr/gcc-10.1.1-x32/bin/gcc -m32 -O2 -W foo.i -S foo.i: In function ??d??: foo.i:17:7: warning: variable ??target?? might be clobbered by ??longjmp?? or ??vfork?? [-Wclobbered] 17 | a target = *target_p; | ^~~~~~ [hjl@gnu-skx-1 creduce-1]$ GCC 9.3 is OK.