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