aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2000-11-28 20:44:30 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2000-11-28 20:44:30 +0100
commit48c4d691bee7cfeb8cd9364b60bb2b899eba9ac0 (patch)
tree5ccb6f13437b4af2333d36bb5cc7583052561df2 /gcc/testsuite/gcc.c-torture
parentfb158467a90388f6abec96db67bcf2ec48688220 (diff)
downloadgcc-48c4d691bee7cfeb8cd9364b60bb2b899eba9ac0.zip
gcc-48c4d691bee7cfeb8cd9364b60bb2b899eba9ac0.tar.gz
gcc-48c4d691bee7cfeb8cd9364b60bb2b899eba9ac0.tar.bz2
loop.c (load_mems): Avoid using next_label to find end_label.
* loop.c (load_mems): Avoid using next_label to find end_label. If jumping outside of the loop (other than loop end), don't hoist MEMs out of loop. * gcc.c-torture/execute/loop-8.c: New test. From-SVN: r37823
Diffstat (limited to 'gcc/testsuite/gcc.c-torture')
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/loop-8.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/loop-8.c b/gcc/testsuite/gcc.c-torture/execute/loop-8.c
new file mode 100644
index 0000000..e8d8cb5
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/loop-8.c
@@ -0,0 +1,23 @@
+double a[3] = { 0.0, 1.0, 2.0 };
+
+void bar (int x, double *y)
+{
+ if (x || *y != 1.0)
+ abort ();
+}
+
+int main ()
+{
+ double c;
+ int d;
+ for (d = 0; d < 3; d++)
+ {
+ c = a[d];
+ if (c > 0.0) goto e;
+ }
+ bar(1, &c);
+ exit (1);
+e:
+ bar(0, &c);
+ exit (0);
+}