/* { 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" } } */