(expand_inline_function): Copy args that are in hard regs instead of
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 13 Aug 1993 18:30:00 +0000 (14:30 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 13 Aug 1993 18:30:00 +0000 (14:30 -0400)
substiting them directly into insns.

From-SVN: r5154

gcc/integrate.c

index 894a938..bb48c28 100644 (file)
@@ -1390,11 +1390,16 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add
             constant equivalence.
 
             If LOC is REG_USERVAR_P, the usual case, COPY must also have
-            that flag set if it is a register.  */
+            that flag set if it is a register.
+
+            Also, don't allow hard registers here; they might not be valid
+            when substituted into insns. */
 
          if ((GET_CODE (copy) != REG && GET_CODE (copy) != SUBREG)
              || (GET_CODE (copy) == REG && REG_USERVAR_P (loc)
-                 && ! REG_USERVAR_P (copy)))
+                 && ! REG_USERVAR_P (copy))
+             || (GET_CODE (copy) == REG
+                 && REGNO (copy) < FIRST_PSEUDO_REGISTER))
            {
              temp = copy_to_mode_reg (GET_MODE (loc), copy);
              REG_USERVAR_P (temp) = REG_USERVAR_P (loc);