aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/20030721-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/20030721-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/20030721-1.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/20030721-1.c b/gcc/testsuite/gcc.dg/20030721-1.c
new file mode 100644
index 00000000000..5e8ed0b434a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20030721-1.c
@@ -0,0 +1,41 @@
+/* { dg-options "-O2" } */
+/* PR optimization/11536 */
+/* Origin: samal@kam.mff.cuni.cz <samal@kam.mff.cuni.cz> */
+/* Testcase by Andrew Pinski <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;
+}