diff --git a/src/compiler/x86/sap.lisp b/src/compiler/x86/sap.lisp
index a01112e731b0cdeefe4064c12828893f8bd0df4a..bec24be84f75b088a16a0d47a2cf0327bf98c77b 100644
--- a/src/compiler/x86/sap.lisp
+++ b/src/compiler/x86/sap.lisp
@@ -186,34 +186,24 @@
 	 (:args (sap :scs (sap-reg))
 		(offset :scs (signed-reg)))
 	 (:arg-types system-area-pointer signed-num)
-	 ,@(unless (eq size :dword)
-	     `((:temporary (:sc ,temp-sc :from (:eval 0) :to (:eval 1))
-			   temp)))
 	 (:results (result :scs (,sc)))
 	 (:result-types ,type)
 	 (:generator 5
-	   (inst mov ,(if (eq size :dword) 'result 'temp)
-		 (make-ea ,size :base sap :index offset))
-	   ,@(unless (eq size :dword)
-	       `((inst ,(if signed 'movsx 'movzx)
-		       result temp)))))
+	   (inst ,(if (eq size :dword) 'mov (if signed 'movsx 'movzx))
+		 result
+		 (make-ea ,size :base sap :index offset))))
        (define-vop (,ref-name-c)
 	 (:translate ,ref-name)
 	 (:policy :fast-safe)
 	 (:args (sap :scs (sap-reg)))
 	 (:arg-types system-area-pointer (:constant (signed-byte 32)))
 	 (:info offset)
-	 ,@(unless (eq size :dword)
-	     `((:temporary (:sc ,temp-sc :from (:eval 0) :to (:eval 1))
-			   temp)))
 	 (:results (result :scs (,sc)))
 	 (:result-types ,type)
 	 (:generator 4
-	   (inst mov ,(if (eq size :dword) 'result 'temp)
-		 (make-ea ,size :base sap :disp offset))
-	   ,@(unless (eq size :dword)
-	       `((inst ,(if signed 'movsx 'movzx)
-		       result temp)))))
+	   (inst ,(if (eq size :dword) 'mov (if signed 'movsx 'movzx))
+		 result
+		 (make-ea ,size :base sap :disp offset))))
        (define-vop (,set-name)
 	 (:translate ,set-name)
 	 (:policy :fast-safe)