anchor.diff:               (let* ((start (gethash vreg vreg-liveness-start))
                       (range (make-instance 'live-range
                                             :vreg vreg
  +                                          :vreg-id (gethash vreg vreg-to-id)
                                             :start start
                                             :end end
                                             :conflicts (if zombiep '() (gethash vreg vreg-conflicts))
  
positive.code:     result))
  
  (defclass linear-allocator ()
    ((%function :initarg :function :reader allocator-backend-function)
     (%ordering :initarg :ordering :reader allocator-instruction-ordering)
     (%architecture :initarg :architecture :reader allocator-architecture)
     (%live-in :initarg :live-in :reader allocator-live-in)
  
negative.code:       (push inst order))
      (nreverse order)))
  
  (defun number-virtual-registers (backend-function)
    (let ((vreg-to-id (make-hash-table :synchronized nil :test 'eq))
          (id-to-vreg (make-array 0 :adjustable t :fill-pointer 0)))
      (flet ((add (reg)
               (when (and (typep reg 'ir:virtual-register)
                          (not (gethash reg vreg-to-id nil)))
                 (setf (gethash reg vreg-to-id) (vector-push-extend reg id-to-vreg)))))
        (ir:do-instructions (inst backend-function)
          (mapcar #'add (ir:instruction-inputs inst))
          (mapcar #'add (ir:instruction-outputs inst))))
      (values vreg-to-id id-to-vreg)))
  
  (defun make-linear-allocator (backend-function architecture &key ordering)
    (multiple-value-bind (basic-blocks bb-preds bb-succs)
        (ir::build-cfg backend-function)
  