| /* PR tree-optimization/84436 */ |
| /* { dg-options "-O2 -fdump-tree-switchconv -fdump-tree-optimized" } */ |
| /* { dg-do run } */ |
| |
| signed char |
| __attribute__ ((noipa)) |
| foo (signed char how) |
| { |
| switch (how) { |
| case -4: how = 96; break; |
| case -3: how = -120; break; |
| case -2: how = -80; break; |
| case -1: how = -40; break; |
| case 0: how = 0; break; |
| case 1: how = 40; break; |
| } |
| return how; |
| } |
| |
| int main() |
| { |
| if (foo (-4) != 96) |
| __builtin_abort (); |
| |
| if (foo (-3) != -120) |
| __builtin_abort (); |
| |
| if (foo (0) != 0) |
| __builtin_abort (); |
| |
| if (foo (123) != 123) |
| __builtin_abort (); |
| |
| return 0; |
| } |
| |
| /* { dg-final { scan-tree-dump-times "40 *\\*" 1 "switchconv" } } */ |
| /* { dg-final { scan-tree-dump-not "switch" "optimized" } } */ |