Changeset 6474


Ignore:
Timestamp:
May 9, 2007, 7:39:22 AM (15 years ago)
Author:
gb
Message:

global label-valued temporaries.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/vinsn.lisp

    r3241 r6474  
    385385         ((null temps) vp)
    386386      (declare (fixnum i))
    387       (let* ((lreg (allocate-temporary-vreg (car temps)))
    388              (class (hard-regspec-class lreg))
    389              (value (hard-regspec-value lreg)))
    390         (when value
    391           (case class
    392             (#.hard-reg-class-gpr (note-vinsn-sets-gpr vinsn value))
    393             (#.hard-reg-class-fpr (note-vinsn-sets-fpr vinsn value))))
    394         (setf (svref vp i) lreg)
    395         (pushnew vinsn (lreg-defs lreg))
    396         (pushnew vinsn (lreg-refs lreg))))))
     387      (let* ((spec (cadar temps)))
     388        (if (and (consp spec) (eq (car spec) :label))
     389          (let* ((label (aref *backend-labels* (cadr spec))))
     390            (push vinsn (vinsn-label-refs label))
     391            (setf (svref vp i) label))
     392          (let* ((lreg (allocate-temporary-vreg (car temps)))
     393                 (class (hard-regspec-class lreg))
     394                 (value (hard-regspec-value lreg)))
     395            (when value
     396              (case class
     397                (#.hard-reg-class-gpr (note-vinsn-sets-gpr vinsn value))
     398                (#.hard-reg-class-fpr (note-vinsn-sets-fpr vinsn value))))
     399            (setf (svref vp i) lreg)
     400            (pushnew vinsn (lreg-defs lreg))
     401            (pushnew vinsn (lreg-refs lreg))))))))
    397402
    398403;;; "spec" is (<name> <class>).
Note: See TracChangeset for help on using the changeset viewer.