From ae877effdd53f5288d7a01684620c8896af364bd Mon Sep 17 00:00:00 2001 From: unknown author <cooker@mandrivalinux.org> Date: Tue, 10 Feb 2009 15:47:48 +0000 Subject: gcc33 pr11536 testcase 2003-07-17 Eric Botcazou <ebotcazou@libertysurf.fr> * gcc.c-torture/execute/loop-16.c: New test. --- gcc/testsuite/gcc.c-torture/execute/loop-16.c | 40 +++++++++++++++++++++++++ 1 files changed, 40 insertions(+), 0 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/loop-16.c diff --git a/gcc/testsuite/gcc.c-torture/execute/loop-16.c b/gcc/testsuite/gcc.c-torture/execute/loop-16.c new file mode 100644 index 0000000..d16f1e6 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/loop-16.c @@ -0,0 +1,40 @@ +/* PR optimization/11536 */ +/* Origin: samal@kam.mff.cuni.cz <samal@kam.mff.cuni.cz> */ +/* Testcase by Andrew Pinsky <pinskia@physics.uc.edu> */ + +/* Verify that the loop optimizer doesn't use moving targets + to calculate the number of iterations of a loop. */ + +extern void abort(void); + +void foo(int) __attribute__((__noinline__)); + +void foo(int i) +{ + abort(); +} + +int main() +{ + int i; + int first= 0; + int last= 0; + + while (last<3) { + last = first; + + while (first<=last) { + first++; + + for (i=0;i<3;i++) + last++; + + if (last>10) + return 0; + } + + foo(first); + } + + return 0; +} -- 1.6.2.4