From c8af9937722b69d8bf7b85d9f743a4d0f73240ee Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 29 Dec 2001 10:56:13 -0800 Subject: [PATCH] * g++.dg/eh/loop1.C: New. From-SVN: r48378 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/eh/loop1.C | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 gcc/testsuite/g++.dg/eh/loop1.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 91fd37d2756..132dc255ddc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-12-29 Richard Henderson + + * g++.dg/eh/loop1.C: New. + 2001-12-29 Nathan Sidwell * 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 index 00000000000..b9b230e0fe1 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/loop1.C @@ -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); +} -- 2.30.2