/* { dg-do compile } */ /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */ int main(void) { int a = -100; int b = 2; int f = 6; int g = 7; int h = 8; /* Exercises complex loop exit conditions. FIXME: This is a strange case where the compiler cc1 and the wrapper gcc don't produce the same representation: (with gcc from command line) T.1_9 = f_2 | a_1; if (T.1_9 == 0) { goto ; } versus (with cc1 called from gdb): if (f_2 == 0) { if (a_1 == 0) { goto ; } else { (void)0 } } else { (void)0 }; */ while (f || a) { a += b; f += g; g += h; } } /* g -> {7, +, 8}_1 f -> {6, +, {7, +, 8}_1}_1 a -> {-100, +, 2}_1 */ /* FIXME. */