| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-sink1-details -fdump-tree-cddce2-details" } */ |
| |
| static int b=4; |
| int c; |
| |
| int |
| main() |
| { |
| int e[5] = {1,1,1,1,1}; |
| for (; b >= 0; b--) { |
| c = e[b]; |
| } |
| return 0; |
| } |
| |
| /* We should sink e[b] out of the loop which is possible after |
| applying store motion to c and b. */ |
| /* { dg-final { scan-tree-dump "Sinking # VUSE" "sink1" } } */ |
| /* And remove the loop after final value replacement. */ |
| /* { dg-final { scan-tree-dump "fix_loop_structure: removing loop" "cddce2" } } */ |