| /* { dg-do compile } */ |
| /* { dg-options "-mips16 -mcode-readable=yes" } */ |
| /* { dg-skip-if "MIPS16 `casesi' loses at -Os" { *-*-* } { "-Os"} { "" } } */ |
| |
| int |
| frob (int i) |
| { |
| switch (i) |
| { |
| case -5: |
| return -2; |
| case -3: |
| return -1; |
| case 0: |
| return 0; |
| case 3: |
| return 1; |
| case 5: |
| break; |
| default: |
| __builtin_unreachable (); |
| } |
| return i; |
| } |
| |
| /* Expect assembly like: |
| |
| la $2,$L4 |
| # Anything goes here. |
| .type __jump_frob_4, @object # Symbol # must match label. |
| __jump_frob_4: # The symbol must match. |
| $L4: # The label must match. |
| .half $L3-$L4 # Or `.word'. The subtrahend |
| .half $L2-$L4 # label must match thoughout |
| .half $L9-$L4 # (repeated 11 times). |
| .half $L2-$L4 # . |
| .half $L2-$L4 # . |
| .half $L8-$L4 # . |
| .half $L2-$L4 # . |
| .half $L2-$L4 # . |
| .half $L7-$L4 # . |
| .half $L2-$L4 # . |
| .half $L8-$L4 # . |
| .type __jend_frob_4, @function # Symbol # must match label. |
| __jend_frob_4: # The symbol must match. |
| .insn |
| |
| that is `__jump_*'/`__jend_*' symbols inserted around a jump table. */ |
| |
| /* { dg-final { scan-assembler "\tla\t\\\$\[0-9\]+,(.L(\[0-9\]+))\n.*\t\\.type\t(__jump_frob_\\2), @object\n\\3:\n\\1:\n(?:\t\\.(?:half|word)\t.L\[0-9\]+-\\1\n)\{11\}\t\\.type\t(__jend_frob_\\2), @function\n\\4:\n\t\\.insn\n" } } */ |