| /* { dg-do compile } */ |
| /* { dg-options "-O1 -fdump-tree-dom1 -fdump-tree-optimized" } */ |
| /* LLVM LOCAL test not applicable */ |
| /* { dg-require-fdump "" } */ |
| |
| void foo(int k) |
| { |
| int i = 1; |
| void *label; |
| |
| label = k ? &&x : &&y; |
| |
| if (k == 1) |
| goto *label; |
| |
| i = 0; |
| goto z; |
| z: |
| x: |
| if (i) |
| dont_remove (); |
| y: ; |
| } |
| |
| /* { dg-final { scan-tree-dump-times "dont_remove \\(\\)" 1 "optimized"} } */ |
| |
| /* We should have folded away the goto &x */ |
| /* { dg-final { scan-tree-dump-times "goto &x" 0 "optimized"} } */ |
| /* { dg-final { cleanup-tree-dump "optimized" } } */ |
| /* { dg-final { cleanup-tree-dump "dom1" } } */ |