111
|
1 // { dg-require-effective-target freorder }
|
|
2 // { dg-options "-O2 -freorder-blocks-and-partition -g" }
|
|
3
|
|
4 extern "C" void abort (void);
|
|
5 struct MyException {};
|
|
6 struct Data {
|
|
7 int nr;
|
|
8 Data() : nr(66) {}
|
|
9 };
|
|
10 Data __attribute__((noinline,noclone)) getData(int i)
|
|
11 {
|
|
12 if (i) throw MyException();
|
|
13 Data data;
|
|
14 data.nr = i;
|
|
15 return data;
|
|
16 }
|
|
17 int main(int, char **)
|
|
18 {
|
|
19 Data data;
|
|
20 try {
|
|
21 data = getData(1);
|
|
22 } catch (MyException& e) {
|
|
23 if (data.nr != 66)
|
|
24 abort ();
|
|
25 }
|
|
26 }
|