// { dg-do run } | |
// { dg-options "-O2" } | |
// Test for bad loop optimization of goto fixups. | |
typedef bool (*ftype) (); | |
int c, d; | |
struct A { | |
A() { ++c; } | |
A(const A&) { ++c; } | |
~A() { ++d; } | |
}; | |
void f (ftype func) | |
{ | |
A a; | |
do { | |
if ((*func)()) return; | |
} while (true); | |
} | |
bool test () | |
{ | |
return true; | |
} | |
main () | |
{ | |
f (test); | |
return (c != d); | |
} |