| /* { dg-do compile } */ |
| /* { dg-require-effective-target exceptions } */ |
| /* { dg-options "-fexceptions -fgimple -fdump-tree-eh-eh" } */ |
| /* { dg-require-effective-target nonlocal_goto } */ |
| |
| void __GIMPLE foo() |
| { |
| try |
| { |
| try |
| { |
| extern void might_throw1 (); |
| might_throw1 (); |
| } |
| finally |
| { |
| extern void might_throw2 (); |
| might_throw2 (); |
| } |
| else |
| { |
| extern void might_throw3 (); |
| might_throw3 (); |
| } |
| } |
| finally |
| { |
| extern void might_throw4 (); |
| might_throw4 (); |
| } |
| } |
| |
| /* { dg-final { scan-tree-dump ".LP 1. might_throw1" "eh" } } */ |
| /* { dg-final { scan-tree-dump ".LP 2. might_throw2" "eh" } } */ |
| /* { dg-final { scan-tree-dump ".LP 2. might_throw3" "eh" } } */ |