| /* PR tree-optimization/66299 */ |
| /* { dg-do run } */ |
| /* { dg-options "-fdump-tree-original" } */ |
| /* { dg-require-effective-target int32plus } */ |
| |
| void |
| test1 (int x) |
| { |
| if ((0 << x) != 0 |
| || (1 << x) != 2 |
| || (2 << x) != 4 |
| || (3 << x) != 6 |
| || (4 << x) != 8 |
| || (5 << x) != 10 |
| || (6 << x) != 12 |
| || (7 << x) != 14 |
| || (8 << x) != 16 |
| || (9 << x) != 18 |
| || (10 << x) != 20) |
| __builtin_abort (); |
| } |
| |
| void |
| test2 (int x) |
| { |
| if (!((0 << x) == 0 |
| && (1 << x) == 4 |
| && (2 << x) == 8 |
| && (3 << x) == 12 |
| && (4 << x) == 16 |
| && (5 << x) == 20 |
| && (6 << x) == 24 |
| && (7 << x) == 28 |
| && (8 << x) == 32 |
| && (9 << x) == 36 |
| && (10 << x) == 40)) |
| __builtin_abort (); |
| } |
| |
| void |
| test3 (unsigned int x) |
| { |
| if ((0U << x) != 0U |
| || (1U << x) != 16U |
| || (2U << x) != 32U |
| || (3U << x) != 48U |
| || (4U << x) != 64U |
| || (5U << x) != 80U |
| || (6U << x) != 96U |
| || (7U << x) != 112U |
| || (8U << x) != 128U |
| || (9U << x) != 144U |
| || (10U << x) != 160U) |
| __builtin_abort (); |
| } |
| |
| void |
| test4 (unsigned int x) |
| { |
| if (!((0U << x) == 0U |
| || (1U << x) == 8U |
| || (2U << x) == 16U |
| || (3U << x) == 24U |
| || (4U << x) == 32U |
| || (5U << x) == 40U |
| || (6U << x) == 48U |
| || (7U << x) == 56U |
| || (8U << x) == 64U |
| || (9U << x) == 72U |
| || (10U << x) == 80U)) |
| __builtin_abort (); |
| } |
| |
| void |
| test5 (int x) |
| { |
| if ((0 << x) == 1 |
| || (0 << x) != 0 |
| || (0x8001U << x) != 0x20000U) |
| __builtin_abort (); |
| } |
| |
| int |
| main (void) |
| { |
| test1 (1); |
| test2 (2); |
| test3 (4U); |
| test4 (3U); |
| test5 (17); |
| } |
| |
| /* { dg-final { scan-tree-dump-not "<<" "original" } } */ |