| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-sink-stats" } */ |
| /* LLVM LOCAL test not applicable */ |
| /* { dg-require-fdump "" } */ |
| extern int foo (int *, int *); |
| extern int foo2 (int); |
| int |
| main (int argc) |
| { |
| int a, b, c; |
| b = argc + 1; |
| c = argc + 2; |
| a = b + c; |
| if (argc) |
| { |
| foo (&b, &c); |
| a = b + c; |
| } |
| foo2 (a); |
| } |
| /* We should sink the first a = b + c calculation into the else branch */ |
| /* { dg-final { scan-tree-dump-times "Sunk statements:1" 1 "sink" } } */ |
| /* { dg-final { cleanup-tree-dump "sink" } } */ |