blob: 406544f3b7d8a64440894166daae333306ca5636 [file] [log] [blame]
/* 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. */