| /* { dg-do link } */ |
| /* { dg-options "-O2" } */ |
| |
| /* PR middle-end/18628 exposed a problem in which cse folded a load |
| from a jump table into the label that was the target of the branch. |
| Unfortunately, the indirect jump was moved to a different basic |
| block, and the LABEL_REF copied to the register wasn't enough to |
| keep the cfg from optimizing the otherwise-unused label away. So |
| we ended up with a dangling reference to the label. */ |
| |
| int i; |
| |
| int main() |
| { |
| for (;;) |
| { |
| switch (i) |
| { |
| case 0: |
| case 1: |
| return 1; |
| |
| case 2: |
| case 3: |
| return 0; |
| |
| case 5: |
| --i; |
| } |
| } |
| } |