| /* PR tree-optimization/84436 */ |
| /* { dg-options "-O2 -fdump-tree-switchconv -fdump-tree-optimized" } */ |
| /* { dg-do run } */ |
| |
| int |
| __attribute__ ((noipa)) |
| foo (int how) |
| { |
| switch (how) { |
| case 2: how = 205; break; /* how = 100 * index + 5 */ |
| case 3: how = 305; break; |
| case 4: how = 405; break; |
| case 5: how = 505; break; |
| case 6: how = 605; break; |
| } |
| return how; |
| } |
| |
| int main() |
| { |
| if (foo (2) != 205) |
| __builtin_abort (); |
| |
| if (foo (6) != 605) |
| __builtin_abort (); |
| |
| if (foo (123) != 123) |
| __builtin_abort (); |
| |
| return 0; |
| } |
| |
| |
| /* { dg-final { scan-tree-dump-times "100 \\*" 1 "switchconv" } } */ |
| /* { dg-final { scan-tree-dump-times ".* \\+ 5" 1 "switchconv" } } */ |
| /* { dg-final { scan-tree-dump-not "switch" "optimized" } } */ |