https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110233
Bug ID: 110233 Summary: Wrong code at -Os on x86_64-linux-gnu Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: shaohua.li at inf dot ethz.ch Target Milestone: --- This seems to be a regression since GCC-12. Compiler explorer: https://godbolt.org/z/8ab6hz9e1 $ cat a.c int a, b = 1691021644, c = 1790785003; short d; short e() { for (; c + 18446744073709551608UL + b - 1691021644 + 18446744073709551608UL - 1790784987 <= 2;) { int *f[2]; int g = 0; for (; b + (b - 1691021644) - 1691021636 + g < 2; g++) f[g] = &a; int **h = &f[1]; d = b; if (d) ; else **h = 0; return b; } return 1; } int main() { e(); } $ $ gcc-tk -Os a.c && ./a.out Segmentation fault $ gcc-tk -O0 a.c && ./a.out $ $ gcc-tk -O0 -fsanitize=address,undefined a.c && ./a.out $