https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103300
Bug ID: 103300 Summary: wrong code at -O3 on x86_64-linux-gnu Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: zhendong.su at inf dot ethz.ch Target Milestone: --- It appears to be a recent regression. [596] % gcctk -v Using built-in specs. COLLECT_GCC=gcctk COLLECT_LTO_WRAPPER=/local/suz-local/software/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-trunk/configure --disable-bootstrap --prefix=/local/suz-local/software/local/gcc-trunk --enable-languages=c,c++ --disable-werror --enable-multilib --with-system-zlib Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211117 (experimental) [master r12-5333-g1a15a91a001] (GCC) [597] % [597] % gcctk -O2 small.c; ./a.out [598] % [598] % gcc110 -O3 small.c; ./a.out [599] % [599] % gcctk -O3 small.c [600] % ./a.out Aborted [601] % [601] % cat small.c int a, b[2], c, d, e, f; int g(int h, int i) { return !i || h && i == 1 ? 0 : h % i; } void j() { while (1) while (1) { if (d) L: if (f) break; if (e) goto L; return; } } int main() { j(); for (c = 0; c < 3; c++) for (a = 0; a < 2; a++) if (g(0, b[a]++)) while (1) ; if (b[1] != 3) __builtin_abort(); return 0; }