// { dg-require-effective-target freorder } | |
// { dg-options "-O2 -freorder-blocks-and-partition -g" } | |
extern "C" void abort (void); | |
struct MyException {}; | |
struct Data { | |
int nr; | |
Data() : nr(66) {} | |
}; | |
Data __attribute__((noinline,noclone)) getData(int i) | |
{ | |
if (i) throw MyException(); | |
Data data; | |
data.nr = i; | |
return data; | |
} | |
int main(int, char **) | |
{ | |
Data data; | |
try { | |
data = getData(1); | |
} catch (MyException& e) { | |
if (data.nr != 66) | |
abort (); | |
} | |
} |