0.8.4.11:
[sbcl.git] / src / compiler / x86 / call.lisp
index a2efd33..fa1c56d 100644 (file)
        (done (gen-label)))
     (inst jmp-short variable-values)
 
-    (inst mov start esp-tn)
-    (inst push (first *register-arg-tns*))
+    (cond ((location= start (first *register-arg-tns*))
+           (inst push (first *register-arg-tns*))
+           (inst lea start (make-ea :dword :base esp-tn :disp 4)))
+          (t (inst mov start esp-tn)
+             (inst push (first *register-arg-tns*))))
     (inst mov count (fixnumize 1))
     (inst jmp done)
 
                 (inst pop ebp-tn))
 
                (t
-                (cerror "Continue any-way"
-                        "VOP return-local doesn't work if old-fp (in slot %s) is not in slot 0"
+                (cerror "Continue anyway"
+                        "VOP return-local doesn't work if old-fp (in slot ~
+                          ~S) is not in slot 0"
                         (tn-offset old-fp)))))
 
         ((any-reg descriptor-reg)