https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106112
Bug ID: 106112 Summary: wrong code at -Os and above 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 regression from 9.*, and affect 10.* and later. [574] % 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/13.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-sanitizers --enable-languages=c,c++ --disable-werror --enable-multilib --with-system-zlib Thread model: posix Supported LTO compression algorithms: zlib gcc version 13.0.0 20220628 (experimental) [master r13-1313-gf9764ea128c] (GCC) [575] % [575] % gcctk -O1 small.c; ./a.out [576] % [576] % gcctk -Os small.c [577] % ./a.out Aborted [578] % [578] % cat small.c int a = 5, b, c, d; unsigned long e = 20862985922; int main() { unsigned f = 4294967292; e = e | f; c = -1 % ((~f ^ 4294967292) - (e - d)); b = ~-~e % ~-d; if (b) a = 0; if (a < 1) __builtin_abort(); return 0; }