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