anchor.diff:        (typecase inst
           (terminator-instruction
            (dolist (succ (successors backend-function inst))
  +           (assert (typep succ 'label))
              (pushnew succ targets)
              (pushnew succ (gethash active-bb successors))
              (pushnew active-bb (gethash succ predecessors)))
  
positive.code:            (push active-bb basic-blocks)))
          (begin-nlx-instruction
           (dolist (succ (begin-nlx-targets inst))
             (pushnew succ targets)
             (pushnew succ (gethash active-bb successors))
             (pushnew active-bb (gethash succ predecessors))))))
  
negative.code:         (remove-basic-block backend-function bb))
        unreachable)))
  
  (defun simplify-cfg-1 (backend-function)
    "Eliminate jumps and branches to jumps."
    (let ((total 0))
      (do-instructions (inst backend-function)
        (typecase inst
          (branch-instruction
           (let* ((true-target (branch-true-target inst))
                  (true-next (next-instruction backend-function true-target))
                  (false-target (branch-false-target inst))
                  (false-next (next-instruction backend-function false-target)))
             (when (and (typep true-next 'jump-instruction)
                        ;; Don't snap if there are phi nodes at the target.
                        (endp (jump-values true-next)))
               (setf true-target (jump-target true-next)
                     (branch-true-target inst) true-target)
               (incf total))
             (when (and (typep false-next 'jump-instruction)
                        ;; Don't snap if there are phi nodes at the target.
                        (endp (jump-values false-next)))
               (setf false-target (jump-target false-next)
                     (branch-false-target inst) false-target)
               (incf total))
             (when (eql true-target false-target)
  