| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-phiopt1 -fdump-tree-optimized" } */ |
| /* PR tree-optimization/19832 */ |
| |
| static inline int max_(int a, int b) |
| { |
| if (a > b) return a; |
| return b; |
| } |
| static inline int min_(int a, int b) |
| { |
| if (a < b) return a; |
| return b; |
| } |
| |
| int f_minus(int a, int b) |
| { |
| if (a != b) return a - b; |
| return a - a; |
| } |
| int f_xor(int a, int b) |
| { |
| if (a != b) return a ^ b; |
| return a ^ a; |
| } |
| |
| int f_ior(int a, int b) |
| { |
| if (a != b) return a | b; |
| return a | a; |
| } |
| int f_and(int a, int b) |
| { |
| if (a != b) return a & b; |
| return a & a; |
| } |
| int f_max(int a, int b) |
| { |
| if (a != b) return max_(a,b); |
| return max_(a,a); |
| } |
| int f_min(int a, int b) |
| { |
| if (a != b) return min_(a,b); |
| return min_(a,a); |
| } |
| int f_mult(int a, int b) |
| { |
| if (a != b) return a * b; |
| return a * a; |
| } |
| int f_plus(int a, int b) |
| { |
| if (a != b) return a + b; |
| return a + a; |
| } |
| |
| /* All of the above function's if should have been optimized away even in phiopt1. */ |
| /* { dg-final { scan-tree-dump-not "if " "phiopt1" } } */ |
| /* { dg-final { scan-tree-dump-not "if " "optimized" } } */ |