/* APPLE LOCAL file lno */ /* { dg-do compile } */ /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */ int main(void) { int a = -100; int b = 2; int c = 3; int d = 4; int e = 5; while (a) { /* Exercises the cycle detector: a -> b -> (c -> d -> e -> c)*. */ a += b; b += c; c += d; d += e; e += c; } } /* This is what is commonly called a "mixer". It whirls the data in a strongly connected component. We expect the following evolution functions: e -> {5, +, c_13}_1 d -> {4, +, {5, +, c_13}_1}_1 c -> {3, +, {4, +, {5, +, c_13}_1}_1}_1 b -> {2, +, {3, +, {4, +, {5, +, c_13}_1}_1}_1}_1 a -> {-100, +, {2, +, {3, +, {4, +, {5, +, c_13}_1}_1}_1}_1}_1 */ /* FIXME: For the moment this testcase does not test for anything, but for not ICEing, and for documentation purposes (okay here is the definition of a mixer). However, I'm considering testing something around the lines of ssa-chrec-08.c, ie. build two mixers, and then compare their values. But that is difficult, and low priority. */