| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-original" } */ |
| |
| int test1(int a, int b) |
| { |
| return (a ^ b) & a; |
| } |
| |
| int test2(int c, int d) |
| { |
| return (c ^ d) & d; |
| } |
| |
| int test3(int e, int f) |
| { |
| return e & (e ^ f); |
| } |
| |
| int test4(int g, int h) |
| { |
| return g & (h ^ g); |
| } |
| |
| /* { dg-final { scan-tree-dump-times "~b \& a" 1 "original" } } */ |
| /* { dg-final { scan-tree-dump-times "~c \& d" 1 "original" } } */ |
| /* { dg-final { scan-tree-dump-times "~f \& e" 1 "original" } } */ |
| /* { dg-final { scan-tree-dump-times "~h \& g" 1 "original" } } */ |
| /* { dg-final { cleanup-tree-dump "original" } } */ |
| |