https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104281
Bug ID: 104281 Summary: wrong code at -O3 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 is a recent regression and likely related to PR 104280 and PR 104279, but it only reproduces at -O3. [537] % 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.1/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.1 20220129 (experimental) [master r12-6930-gf6f2d6cfec1] (GCC) [538] % [538] % gcctk -O2 small.c; ./a.out [539] % [539] % gcctk -O3 small.c [540] % timeout -s 9 5 ./a.out Killed [541] % [541] % cat small.c unsigned a = 1; int b, c = 2; long d; int main() { while (1) { int m = a; L: a = ~(-(m || b & d)); b = ((1 ^ a) / c); if (b) goto L; break; } return 0; }