| // PR optimization/12215 |
| // Origin: <nick@ilm.com> |
| // Reduced testcase by Wolfgang Bangerth <bangerth@ticam.utexas.edu> |
| |
| // This used to fail because the CSE pass destroyed the CFG in presence |
| // of trapping loads, which led to the deletion of basic blocks. |
| |
| // { dg-do compile } |
| // { dg-options "-O2 -fno-gcse -fnon-call-exceptions" } |
| |
| |
| struct B { |
| ~B() throw() {} |
| }; |
| |
| struct X { |
| X(const char*, const B&); |
| ~X() {} |
| }; |
| |
| bool m(); |
| void f(int &i, float &arg0); |
| |
| void g (const char **argv) { |
| float val; |
| int i = 1; |
| |
| try { |
| while ( i < 1 ) |
| { |
| X arg(argv[i], B()); |
| if (m()) |
| throw(0); |
| |
| f(i, val); |
| } |
| } catch (...) {} |
| } |