| /* { dg-do compile } */ |
| /* { dg-options "-O2 -ftree-tail-merge -fdump-tree-pre" } */ |
| |
| /* Different stmt order. */ |
| |
| int f(int c, int b, int d) |
| { |
| int r, r2, e; |
| |
| if (c) |
| { |
| r = b + d; |
| r2 = d - b; |
| } |
| else |
| { |
| r2 = d - b; |
| e = d + b; |
| r = e; |
| } |
| |
| return r - r2; |
| } |
| |
| /* During PRE elimination we should simplify this to return b * 2. */ |
| /* { dg-final { scan-tree-dump-times "if " 0 "pre" } } */ |
| /* { dg-final { scan-tree-dump "_\[0-9\]+ = b_\[0-9\]+\\(D\\) \\* 2;\[\\r\\n\]\[^\\r\\n\]*return _\[0-9\]+;" "pre" } } */ |
| /* { dg-final { scan-tree-dump-not "Invalid sum" "pre"} } */ |