https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101062
Bug ID: 101062 Summary: wrong code with "-O2 -fno-toplevel-reorder -frename-registers" Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: suochenyao at 163 dot com Target Milestone: --- ******************************************************************************* OS and Platform: CentOS Linux release 7.8.2003 (Core), x86_64 GNU/Linux ******************************************************************************* Program: int printf(const char *, ...); union a { signed b : 5; }; int c; volatile union a d[7] = {{8}}; short e = 1; void f() { c = 5; for (; c; c--) { short *g = &e; *g = d[6].b = 0; } } int main() { f(); printf("%d\n", e); } ******************************************************************************* gcc version: $ gcc -v Using built-in specs. COLLECT_GCC=/data/bin/gcc-dev/bin/gcc COLLECT_LTO_WRAPPER=/data/bin/gcc-dev/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --prefix=/data/bin/gcc-dev --disable-multilib --enable-languages=c,c++ Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20210613 (experimental) (GCC) git version: 681143b9b94d7f1c88a7c34e2250865c31191959 ******************************************************************************* Command Lines: $ gcc a.c -o a1.out $ gcc -O2 -fno-toplevel-reorder -frename-registers -Wall -Wextra -fno-strict-aliasing -fwrapv a.c -o a2.out $ ./a1.out 0 $ ./a2.out 1