It remains to be seen whether:
/* In mips16 mode, we permit the $t temporary registers to be used
for reload. We prohibit the unused $s registers, since they
are caller saved, and saving them via a mips16 register would
probably waste more time than just reloading the value. */
if (TARGET_MIPS16)
{
fixed_regs[18] = call_used_regs[18] = 1;
fixed_regs[19] = call_used_regs[19] = 1;
fixed_regs[20] = call_used_regs[20] = 1;
fixed_regs[21] = call_used_regs[21] = 1;
fixed_regs[22] = call_used_regs[22] = 1;
fixed_regs[23] = call_used_regs[23] = 1;
fixed_regs[26] = call_used_regs[26] = 1;
fixed_regs[27] = call_used_regs[27] = 1;
fixed_regs[30] = call_used_regs[30] = 1;
}
still makes sense when GENERATE_MIPS16E_SAVE_RESTORE, since saving and
restoring these registers is now so cheap.