]> gcc.gnu.org Git - gcc.git/commitdiff
* g++.dg/eh/loop1.C: New.
authorRichard Henderson <rth@redhat.com>
Sat, 29 Dec 2001 18:56:13 +0000 (10:56 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 29 Dec 2001 18:56:13 +0000 (10:56 -0800)
From-SVN: r48378

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/eh/loop1.C [new file with mode: 0644]

index 91fd37d2756e1dc87b26f06389ffd66ab37bd8aa..132dc255ddc8ed571da56486cf917f0ea8c9a5bc 100644 (file)
@@ -1,3 +1,7 @@
+2001-12-29  Richard Henderson  <rth@redhat.com>
+
+       * g++.dg/eh/loop1.C: New.
+
 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
 
        * g++.dg/template/crash1.C: New test.
diff --git a/gcc/testsuite/g++.dg/eh/loop1.C b/gcc/testsuite/g++.dg/eh/loop1.C
new file mode 100644 (file)
index 0000000..b9b230e
--- /dev/null
@@ -0,0 +1,30 @@
+// Verify that loop optimization takes into account the exception edge
+// and does not increment I before the call.
+// { dg-do run }
+// { dg-options "-O2" }
+
+extern "C" void abort();
+static void bar(char *);
+
+static void foo(unsigned long element_count, char *ptr)
+{
+  unsigned long i;
+  try {
+    for (i = 0; i != element_count; i++, ptr += 8)
+      bar (ptr);
+  }
+  catch (...) {
+    if (i)
+      abort ();
+  }
+}
+
+static void bar(char *)
+{
+  throw 1;
+}
+
+int main()
+{
+  foo(2, 0);
+}
This page took 0.084043 seconds and 5 git commands to generate.