diff --git a/compiler/rt/call.lisp b/compiler/rt/call.lisp
index 301e38ad7d488977d9bd12cc285d63dfbd840e29..349d1a9d478ecb6474afd658e2b08daa64c7264b 100644
--- a/compiler/rt/call.lisp
+++ b/compiler/rt/call.lisp
@@ -163,7 +163,8 @@
 ;;; on the nstack.
 ;;;
 (define-vop (compute-old-nfp)
-  (:results (val :scs (word-pointer-reg)))
+  (:results (val :scs (word-pointer-reg)
+		 :load-if (current-nfp-tn vop)))
   (:vop-var vop)
   (:generator 1
     (let ((nfp (current-nfp-tn vop)))
@@ -214,7 +215,8 @@
 ;;;
 (define-vop (allocate-frame)
   (:results (res :scs (word-pointer-reg))
-	    (nfp :scs (word-pointer-reg)))
+	    (nfp :scs (word-pointer-reg)
+		 :load-if (ir2-environment-number-stack-p callee)))
   (:info callee)
   (:generator 2
     (move res csp-tn)
@@ -529,7 +531,6 @@ default-value-5
       (when cur-nfp
 	(load-stack-tn cur-nfp nfp-save)))))
 
-
 
 ;;;; Local call with known values return: