| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fno-tree-switch-conversion -fdump-tree-vrp1" } */ |
| |
| extern void vrp_keep (void); |
| |
| /* Test <<. */ |
| |
| void |
| f3 (int s, int b) |
| { |
| if (s >> 3 == -2) |
| /* s in range [-16, -9]. */ |
| { |
| s += 17; |
| /* s in range [1, 8]. */ |
| b = (b & 1) + 1; |
| /* b in range [1, 2]. */ |
| b = b << s; |
| /* b in range [bmin << smin, bmax << smax], |
| == [1 << 1, 2 << 8] |
| == [2, 512]. */ |
| if (b == 2) |
| vrp_keep (); |
| if (b == 512) |
| vrp_keep (); |
| } |
| } |
| |
| int |
| main () |
| { |
| return 0; |
| } |
| |
| /* { dg-final { scan-tree-dump-times "vrp_keep \\(" 2 "vrp1"} } */ |
| |
| |