diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 366b53362d8..3e1d11a3663 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-08-10 Richard Sandiford + + * config/mips/mips.c (save_restore_insns): Don't mark the RA's + stack slot as unchanging if current_function_calls_eh_return. + 2001-08-10 Richard Sandiford * config/mips/mips.md (reload_outcc): Use HARD_REGNO_NREGS to diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 879da3da73e..dc1781c0691 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -6608,7 +6608,9 @@ save_restore_insns (store_p, large_reg, large_offset, file) gen_rtx (PLUS, Pmode, base_reg_rtx, GEN_INT (gp_offset - base_offset))); - RTX_UNCHANGING_P (mem_rtx) = 1; + if (regno != GP_REG_FIRST + 31 + || ! current_function_calls_eh_return) + RTX_UNCHANGING_P (mem_rtx) = 1; /* The mips16 does not have an instruction to load $31, so we load $7 instead, and work things out