OSDN Git Service

* function.c (record_hard_reg_sets): Restrict the previous change
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Jul 2010 22:51:13 +0000 (22:51 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Jul 2010 22:51:13 +0000 (22:51 +0000)
to cases where the incoming nominal mode is the same as the
incoming promoted mode and everything happens in MODE_INT.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162391 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/function.c

index 74607e5..2cef2e9 100644 (file)
        an old insn, ignore a use that occurs after store_ruid.
        * Makefile.in (postreload.o): Update dependencies.
 
+       * function.c (record_hard_reg_sets): Restrict the previous change
+       to cases where the incoming nominal mode is the same as the
+       incoming promoted mode and everything happens in MODE_INT.
+
 2010-07-21  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/45015
index 74672c3..5a308f4 100644 (file)
@@ -2918,7 +2918,10 @@ assign_parm_setup_reg (struct assign_parm_data_all *all, tree parm,
                     || promoted_nominal_mode != data->promoted_mode);
   moved = false;
 
-  if (need_conversion)
+  if (need_conversion
+      && GET_MODE_CLASS (data->nominal_mode) == MODE_INT
+      && data->nominal_mode == data->passed_mode
+      && data->nominal_mode == GET_MODE (data->entry_parm))
     {
       /* ENTRY_PARM has been converted to PROMOTED_MODE, its
         mode, by the caller.  We now have to convert it to
@@ -2979,8 +2982,9 @@ assign_parm_setup_reg (struct assign_parm_data_all *all, tree parm,
          if (moved)
            {
              emit_insn (insns);
-             equiv_stack_parm = gen_rtx_fmt_e (code, GET_MODE (parmreg),
-                                               equiv_stack_parm);
+             if (equiv_stack_parm != NULL_RTX)
+               equiv_stack_parm = gen_rtx_fmt_e (code, GET_MODE (parmreg),
+                                                 equiv_stack_parm);
            }
        }
     }