32 lines
359 B
C
32 lines
359 B
C
// { 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);
|
|
}
|