Fix warning with -Wsign-compare -Wsystem-headers
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / forwprop-33.c
blobc7124deee11f3655d7c50bd9605bb7caddba6470
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-forwprop3" } */
4 unsigned short
5 test1 (unsigned short a)
7 a ^= 0x4002;
8 a >>= 1;
9 a |= 0x8000; /* Simplify to ((a >> 1) ^ 0xa001). */
10 return a;
12 /* { dg-final { scan-tree-dump "\\^ 40961" "forwprop3" } } */
14 unsigned short
15 test2 (unsigned short a)
17 a |= 0x4002;
18 a <<= 1;
19 a ^= 0x0001; /* Simplify to ((a << 1) | 0x8005). */
20 return a;
22 /* { dg-final { scan-tree-dump "\\| 32773" "forwprop3" } } */
24 unsigned short
25 test3 (unsigned short a)
27 a &= 0xd123;
28 a ^= 0x6040;
29 a |= 0xc031; /* Simplify to ((a & 0xd123) | 0xe071). */
30 return a;
32 /* { dg-final { scan-tree-dump "\\| 57457" "forwprop3" } } */
34 unsigned short
35 test4 (unsigned short a)
37 a ^= 0x8002;
38 a >>= 1;
39 a |= 0x8000;
40 return a;
42 /* { dg-final { scan-tree-dump "\\^ 49153" "forwprop3" } } */
44 unsigned short
45 test5 (unsigned short a)
47 a ^= 0x8002;
48 a >>= 1;
49 a |= 0x8001; /* Only move shift inward: (((a >> 1) ^ 0x4001) | 0x8001). */
50 return a;
52 /* { dg-final { scan-tree-dump "\\^ 16385" "forwprop3" } } */
53 /* { dg-final { scan-tree-dump "\\| 32769" "forwprop3" } } */
55 short
56 test6 (short a)
58 a &= 0x7fff;
59 a >>= 2;
60 return a;
62 /* { dg-final { scan-tree-dump "\\& 8191" "forwprop3" } } */
64 short
65 test7 (short a)
67 a &= 0x8fff;
68 a >>= 2;
69 return a;
71 /* { dg-final { scan-tree-dump "\\& -7169" "forwprop3" } } */