(assign_parms): If STACK_REGS is defined...
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 25 Apr 1995 23:08:04 +0000 (19:08 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 25 Apr 1995 23:08:04 +0000 (19:08 -0400)
(assign_parms): If STACK_REGS is defined, generate USE insns before
the function body, thus showing which registers are filled with
parameters.

From-SVN: r9461

gcc/function.c

index 48bcc9f3d8acf6b1846967f9a8df5e19fb34d87a..6a936ff22b6147900e13cfa9fcec98c71450c2e2 100644 (file)
@@ -3497,6 +3497,17 @@ assign_parms (fndecl, second_time)
        }
 #endif /* 0 */
 
+#ifdef STACK_REGS
+      /* We need this "use" info, because the gcc-register->stack-register
+        converter in reg-stack.c needs to know which registers are active
+        at the start of the function call.  The actual parameter loading
+        instructions are not always available then anymore, since they might
+        have been optimised away.  */
+
+      if (GET_CODE (entry_parm) == REG && !(hide_last_arg && last_named))
+         emit_insn (gen_rtx (USE, GET_MODE (entry_parm), entry_parm));
+#endif
+
       /* ENTRY_PARM is an RTX for the parameter as it arrives,
         in the mode in which it arrives.
         STACK_PARM is an RTX for a stack slot where the parameter can live