1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-forwprop3" } */
5 test1 (unsigned short a
)
9 a
|= 0x8000; /* Simplify to ((a >> 1) ^ 0xa001). */
12 /* { dg-final { scan-tree-dump "\\^ 40961" "forwprop3" } } */
15 test2 (unsigned short a
)
19 a
^= 0x0001; /* Simplify to ((a << 1) | 0x8005). */
22 /* { dg-final { scan-tree-dump "\\| 32773" "forwprop3" } } */
25 test3 (unsigned short a
)
29 a
|= 0xc031; /* Simplify to ((a & 0xd123) | 0xe071). */
32 /* { dg-final { scan-tree-dump "\\| 57457" "forwprop3" } } */
35 test4 (unsigned short a
)
42 /* { dg-final { scan-tree-dump "\\^ 49153" "forwprop3" } } */
45 test5 (unsigned short a
)
49 a
|= 0x8001; /* Only move shift inward: (((a >> 1) ^ 0x4001) | 0x8001). */
52 /* { dg-final { scan-tree-dump "\\^ 16385" "forwprop3" } } */
53 /* { dg-final { scan-tree-dump "\\| 32769" "forwprop3" } } */
62 /* { dg-final { scan-tree-dump "\\& 8191" "forwprop3" } } */
71 /* { dg-final { scan-tree-dump "\\& -7169" "forwprop3" } } */