From 650e76e600ca917d38a343d3751b5743aee324bb Mon Sep 17 00:00:00 2001
From: Carl Shapiro <cshapiro@common-lisp.net>
Date: Sat, 10 Aug 2013 23:21:42 -0700
Subject: [PATCH] compiler/x86: load byte and word values through a sap without
 a temporary

---
 src/compiler/x86/sap.lisp | 22 ++++++----------------
 1 file changed, 6 insertions(+), 16 deletions(-)

diff --git a/src/compiler/x86/sap.lisp b/src/compiler/x86/sap.lisp
index a01112e73..bec24be84 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)
-- 
GitLab