gcc.dg/pr27531-1.c was failing with rtl checking enabled for -mips16 -mabi=32 on mips64-linux-gnu. The problem was that mips_adjust_insn_length didn't cope properly with the new(ish) JUMP_TABLE_DATA rtx, which has no insn code.
Tested on mips64-linux-gnu and applied. Richard gcc/ * config/mips/mips.c (mips_adjust_insn_length): Add checks for JUMP_P and INSN_P. Index: gcc/config/mips/mips.c =================================================================== --- gcc/config/mips/mips.c 2013-08-13 08:57:15.711421748 +0100 +++ gcc/config/mips/mips.c 2013-08-18 21:00:01.382816765 +0100 @@ -12297,6 +12297,7 @@ mips_adjust_insn_length (rtx insn, int l /* mips.md uses MAX_PIC_BRANCH_LENGTH as a placeholder for the length of a PIC long-branch sequence. Substitute the correct value. */ if (length == MAX_PIC_BRANCH_LENGTH + && JUMP_P (insn) && INSN_CODE (insn) >= 0 && get_attr_type (insn) == TYPE_BRANCH) { @@ -12318,7 +12319,9 @@ mips_adjust_insn_length (rtx insn, int l length += TARGET_MIPS16 ? 2 : 4; /* See how many nops might be needed to avoid hardware hazards. */ - if (!cfun->machine->ignore_hazard_length_p && INSN_CODE (insn) >= 0) + if (!cfun->machine->ignore_hazard_length_p + && INSN_P (insn) + && INSN_CODE (insn) >= 0) switch (get_attr_hazard (insn)) { case HAZARD_NONE: