blob: ae48c0b4b5c8ee5a96ab05d8151373ff469be31b [file] [log] [blame]
/* { 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" } } */