anchor.diff:     (%live-in :initarg :live-in :reader allocator-live-in)
      (%live-out :initarg :live-out :reader allocator-live-out)
      (%mv-flow :initarg :mv-flow :reader allocator-mv-flow)
  +   ;; Stored reversed, with the next range at the end, so the next range can be vector-pop'd off.
      (%ranges :accessor allocator-remaining-ranges)
      (%vreg-ranges :accessor allocator-vreg-ranges)
      (%vreg-hints :accessor allocator-vreg-hints)
  
positive.code:            (let* ((src-interval (interval-at allocator src instruction-index))
                    (dst-interval (interval-at allocator dst instruction-index))
                    (first-active-range (first (allocator-active-ranges allocator)))
                    (first-remaining-range (first (allocator-remaining-ranges allocator))))
               (and (not (interval-spilled-p allocator src-interval))
                    (eql first-active-range src-interval)
                    (eql (live-range-end first-active-range) instruction-index)
  
negative.code:        (cond ((and (typep inst 'ir:move-instruction)
                     (mergable-move-instruction-p allocator inst instruction-index))
                (let* ((old-range (pop (allocator-active-ranges allocator)))
                       (new-range (vector-pop (allocator-remaining-ranges allocator)))
                       (reg (gethash old-range (allocator-range-allocations allocator))))
                  (assert (eql (live-range-start new-range) instruction-index))
                  (unless ir::*shut-up*
  