From c8f7c04b37b78dc1735e5e8cb641d37fb7c4eff8 Mon Sep 17 00:00:00 2001
From: ram <ram>
Date: Wed, 10 Jul 1991 17:51:14 +0000
Subject: [PATCH] In system-setters combined the BASE and TEMP temporaries to
 keep the poor register allocator from getting all confused.

---
 compiler/rt/sap.lisp | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/compiler/rt/sap.lisp b/compiler/rt/sap.lisp
index 4b04b2e52..577d6bc46 100644
--- a/compiler/rt/sap.lisp
+++ b/compiler/rt/sap.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/rt/sap.lisp,v 1.5 1991/04/29 06:19:14 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/rt/sap.lisp,v 1.6 1991/07/10 17:51:14 ram Exp $
 ;;;
 ;;; This file contains the IBM RT VM definition of SAP operations.
 ;;;
@@ -309,13 +309,11 @@
 	 (:policy :fast-safe)
 	 (:translate ,translate)
 	 (:args (object :scs (sap-reg) :to (:eval 0))
-		(offset :scs (any-reg) :target temp)
+		(offset :scs (any-reg) :target base)
 		(data :scs (,@data-scs) :target result
 		      :to (:eval 1)))
 	 (:arg-types system-area-pointer positive-fixnum ,data-type)
-	 (:temporary (:scs (sap-reg) :from (:eval 0) :to (:eval 2)) base)
-	 (:temporary (:scs (non-descriptor-reg)
-			   :from (:argument 1) :to (:eval 0)) temp)
+	 (:temporary (:scs (sap-reg) :from (:argument 1) :to (:eval 2)) base)
 	 ;; Add some bullshit temporaries because of human understanding about
 	 ;; a peculiarity in compiler register allocation, so this will trick
 	 ;; the compiler into giving us enough non-descriptor-regs.
@@ -326,14 +324,14 @@
 	 (:results (result :scs (,@data-scs)))
 	 (:result-types ,data-type)
 	 (:generator 7
-	   (move temp offset)
+	   (move base offset)
 	   ;;
 	   ;; We shift right because the offset has fixnum lowtag.  Effectively
 	   ;; the index has already been multiplied by 4.
 	   ,@(let ((adj (- 2 shift)))
 	       (unless (zerop adj)
-		 `((inst sr temp ,adj))))
-	   (inst cas base temp object)
+		 `((inst sr base ,adj))))
+	   (inst cas base base object)
 	   (let ((offset 0))
 	     ,set-form)
 	   (move result data))))))
-- 
GitLab