| /* PR tree-optimization/49161 */ | |
| extern void abort (void); | |
| int c; | |
| __attribute__((noinline, noclone)) void | |
| bar (int x) | |
| { | |
| if (x != c++) | |
| abort (); | |
| } | |
| __attribute__((noinline, noclone)) void | |
| foo (int x) | |
| { | |
| switch (x) | |
| { | |
| case 3: goto l1; | |
| case 4: goto l2; | |
| case 6: goto l3; | |
| default: return; | |
| } | |
| l1: | |
| goto l4; | |
| l2: | |
| goto l4; | |
| l3: | |
| bar (-1); | |
| l4: | |
| bar (0); | |
| if (x != 4) | |
| bar (1); | |
| if (x != 3) | |
| bar (-1); | |
| bar (2); | |
| } | |
| int | |
| main () | |
| { | |
| foo (3); | |
| if (c != 3) | |
| abort (); | |
| return 0; | |
| } |