1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-original" } */
3 
4 /* x | ~(x | y) -> x | ~y */
fn1(int x,int y)5 int fn1 (int x, int y)
6 {
7 	return x | ~(x | y);
8 }
fn2(int x,int y)9 int fn2 (int x, int y)
10 {
11 	return ~(x | y) | x;
12 }
fn3(int x,int y)13 int fn3 (int x, int y)
14 {
15 	return x | ~(y | x);
16 }
fn4(int x,int y)17 int fn4 (int x, int y)
18 {
19 	return ~(y | x) | x;
20 }
fn5(int z)21 int fn5 (int z)
22 {
23 	return z | ~(z | 3);
24 }
fn6(int z)25 int fn6 (int z)
26 {
27 	return ~(z | 3) | z;
28 }
29 
30 
31 /* { dg-final { scan-tree-dump-times "~y \\| x" 4 "original" } } */
32 /* { dg-final { scan-tree-dump-times "z \\| -4" 2 "original" } } */
33