/* { 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" } } */