// 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); }