Testing with the shrink-wrapping patch added reveals a problem with the
mips16 "save" insn: sometimes we store registers that shouldn't be
considered saved registers; we have to clear RTX_FRAME_RELATED_P for
these. Testing in progress with mips-elf, "ips16/arch=mips32r2/abi=32"
and some other multilibs. Ok?
Bernd
* config/mips/mips.c (mips16e_build_save_restore): Clear
RTX_FRAME_RELATED_P for argument stores stolen from the first
block.
Index: gcc/config/mips/mips.c
===================================================================
--- gcc/config/mips/mips.c (revision 178135)
+++ gcc/config/mips/mips.c (working copy)
@@ -8448,6 +8456,7 @@ mips16e_build_save_restore (bool restore
offset = top_offset + i * UNITS_PER_WORD;
set = mips16e_save_restore_reg (restore_p, offset, GP_ARG_FIRST + i);
XVECEXP (pattern, 0, n++) = set;
+ RTX_FRAME_RELATED_P (set) = 0;
}
/* Then fill in the other register moves. */