| /* { dg-do compile } */ | |
| /* { dg-options "-O2 -fno-code-hoisting -fno-tree-cselim -fdump-tree-pre-stats" } */ | |
| int g2; | |
| struct A { | |
| int a; int b; | |
| }g1; | |
| int foo(int a, int b) | |
| { | |
| if (a > 0) | |
| { | |
| g1.a = a+ b; | |
| } | |
| else | |
| g1.a = b; | |
| g2 = a+b; | |
| return g1.a; | |
| } | |
| /* We will eliminate the g1.a from the return statement as fully redundant, | |
| and remove one calculation of a + b. */ | |
| /* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */ |