/* PR tree-optimization/101223 */ /* { dg-do run } */ /* { dg-options "-O2 " } */ struct { int a : 1; } b; int c = 1, d; int foo1() { for (; d < 2; d++) { int e = ~c, f = 0, g; if (e) { f = c; g = b.a; b.a = f; if (b.a >= g) __builtin_abort(); } c = f; b.a = g; } return 0; } int foo2() { for (; d < 2; d++) { int e = ~c, f = 0, g; if (e) { f = c; g = b.a; b.a = f; if (g <= b.a) __builtin_abort(); } c = f; b.a = g; } return 0; } int main () { return foo1() + foo2(); }