mips.c (save_restore_insns): Don't mark any register save slots as unchanging if...
authorRichard Sandiford <rsandifo@redhat.com>
Wed, 5 Sep 2001 08:45:33 +0000 (08:45 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 5 Sep 2001 08:45:33 +0000 (08:45 +0000)
  * 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

gcc/ChangeLog
gcc/config/mips/mips.c

index 7554869b88ff5776d379031821569e1c4c521abc..b9f1fc3ac276631c97461b242c6beef3e3aa2955 100644 (file)
@@ -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.
index 28e0de814fb0e591696ad6161b13ea8b911cb115..583cf7385340e54eeb7d8c2abfe6caee91f415e2 100644 (file)
@@ -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);