diff --git a/assembly/assemfile.lisp b/assembly/assemfile.lisp index 117035d2415ea430696f0bb88c7e38b99015285d..5a3fbcba483f753363b9376422a640711992335e 100644 --- a/assembly/assemfile.lisp +++ b/assembly/assemfile.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/assemfile.lisp,v 1.11 1990/05/24 13:24:06 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/assemfile.lisp,v 1.12 1990/06/16 17:21:04 wlott Exp $ ;;; ;;; This file contains the extra code necessary to feed an entire file of ;;; assembly code to the assembler. @@ -70,21 +70,25 @@ (kind :temp :type (member :arg :temp :result)) (name nil :type symbol) (temp nil :type symbol) - (sc nil :type symbol) + (scs nil :type (or list symbol)) (offset 0 :type fixnum)) (defun %print-reg-spec (spec stream depth) (declare (ignore depth)) (format stream - "#<reg ~S ~S sc=~S offset=~S>" + "#<reg ~S ~S scs=~S offset=~S>" (reg-spec-kind spec) (reg-spec-name spec) - (reg-spec-sc spec) + (reg-spec-scs spec) (reg-spec-offset spec))) +(defun reg-spec-sc (spec) + (if (atom (reg-spec-scs spec)) + (reg-spec-scs spec) + (car (reg-spec-scs spec)))) (defun parse-reg-spec (kind name sc offset) - (let ((reg (make-reg-spec :kind kind :name name :sc sc :offset offset))) + (let ((reg (make-reg-spec :kind kind :name name :scs sc :offset offset))) (ecase kind (:temp) ((:arg :res) @@ -123,7 +127,9 @@ (defun arg-or-res-spec (reg) `(,(reg-spec-name reg) - :scs (,(reg-spec-sc reg)) + :scs ,(if (atom (reg-spec-scs reg)) + (list (reg-spec-scs reg)) + (reg-spec-scs reg)) ,@(unless (eq (reg-spec-kind reg) :res) `(:target ,(reg-spec-temp reg)))))