aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.c-torture/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/loop-5.c36
2 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/ChangeLog b/gcc/testsuite/gcc.c-torture/ChangeLog
index 365bc6a..23df8a7 100644
--- a/gcc/testsuite/gcc.c-torture/ChangeLog
+++ b/gcc/testsuite/gcc.c-torture/ChangeLog
@@ -1,3 +1,7 @@
+2000-04-26 Geoff Keating <geoffk@cygnus.com>
+
+ * execute/loop-5.c: New test.
+
2000-04-25 Jakub Jelinek <jakub@redhat.com>
* execute/va-arg-20.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/execute/loop-5.c b/gcc/testsuite/gcc.c-torture/execute/loop-5.c
new file mode 100644
index 0000000..44ece27
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/loop-5.c
@@ -0,0 +1,36 @@
+static int ap(int i);
+static void testit(void){
+ int ir[4] = {0,1,2,3};
+ int ix,n,m;
+ n=1; m=3;
+ for (ix=1;ix<=4;ix++) {
+ if (n == 1) m = 4;
+ else m = n-1;
+ ap(ir[n-1]);
+ n = m;
+ }
+}
+
+static int t = 0;
+static int a[4];
+
+static int ap(int i){
+ if (t > 3)
+ abort();
+ a[t++] = i;
+ return 1;
+}
+
+int main(void)
+{
+ testit();
+ if (a[0] != 0)
+ abort();
+ if (a[1] != 3)
+ abort();
+ if (a[2] != 2)
+ abort();
+ if (a[3] != 1)
+ abort();
+ exit(0);
+}