https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85529
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Slightly tweaked testcase: struct S { int a; }; int b, c = 1, d, e, f; static int g; volatile struct S s; signed char foo (signed char i, int j) { return i < 0 ? i : i << j; } int main () { signed char k = -83; if (!d) goto L; k = e || f; L: for (; b < 1; b++) s.a != (k < foo (k, 2) && (c = k = g)); if (c != 1) __builtin_abort (); return 0; } Another testcase, that started being miscompiled with r255387 is: __attribute__((noipa)) int foo (int x) { x &= 63; x -= 50; x |= 1; if (x < 0) return 1; int y = x >> 2; if (x >= y) return 1; return 0; } int main () { int i; for (i = 0; i < 63; i++) if (foo (i) != 1) __builtin_abort (); return 0; }