| /* A test for final value replacement and higher-order ivs, |
| see PR 22442. */ |
| |
| /* { dg-do compile } */ |
| /* { dg-options "-O1 -fdump-tree-optimized" } */ |
| /* LLVM LOCAL test not applicable */ |
| /* { dg-require-fdump "" } */ |
| |
| void bar (unsigned); |
| |
| void foo (void) |
| { |
| unsigned i, a; |
| |
| for (i = 0; i < 5; i++) |
| a = i * i; |
| |
| bar (a); |
| } |
| |
| /* Final value of a gets replaced. */ |
| |
| /* { dg-final { scan-tree-dump-times "\\(16\\)" 1 "optimized" } } */ |
| |
| /* And the empty loop is removed. */ |
| |
| /* { dg-final { scan-tree-dump-times "if " 0 "optimized" } } */ |
| |
| /* { dg-final { cleanup-tree-dump "optimized" } } */ |
| |