aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2001-09-05 08:45:33 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2001-09-05 08:45:33 +0000
commiteecd6d9c571a4979d1383691d65cd475672c0257 (patch)
tree0191b85042bd49cbfe6b03f9228cac06be0c7b10
parenta39bdefc84b72b00150490310e4c1c1cd6b449f2 (diff)
downloadgcc-eecd6d9c571a4979d1383691d65cd475672c0257.zip
gcc-eecd6d9c571a4979d1383691d65cd475672c0257.tar.gz
gcc-eecd6d9c571a4979d1383691d65cd475672c0257.tar.bz2
mips.c (save_restore_insns): Don't mark any register save slots as unchanging if...
* config/mips/mips.c (save_restore_insns): Don't mark any register save slots as unchanging if current_function_calls_eh_return. From-SVN: r45406
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7554869..b9f1fc3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-09-05 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.c (save_restore_insns): Don't mark any register
+ save slots as unchanging if current_function_calls_eh_return.
+
2001-09-05 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.c (alpha_legitimate_address_p): New.
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 28e0de8..583cf73 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -6621,8 +6621,7 @@ save_restore_insns (store_p, large_reg, large_offset, file)
gen_rtx (PLUS, Pmode, base_reg_rtx,
GEN_INT (gp_offset - base_offset)));
- if (regno != GP_REG_FIRST + 31
- || ! current_function_calls_eh_return)
+ if (! current_function_calls_eh_return)
RTX_UNCHANGING_P (mem_rtx) = 1;
/* The mips16 does not have an instruction to load
@@ -6779,7 +6778,8 @@ save_restore_insns (store_p, large_reg, large_offset, file)
gen_rtx (PLUS, Pmode, base_reg_rtx,
GEN_INT (fp_offset
- base_offset)));
- RTX_UNCHANGING_P (mem_rtx) = 1;
+ if (! current_function_calls_eh_return)
+ RTX_UNCHANGING_P (mem_rtx) = 1;
if (store_p)
mips_emit_frame_related_store (mem_rtx, reg_rtx, fp_offset);