anchor.diff:            (remove-instruction backend-function inst))))
       t))
   
  -(defun ssa-convert-locals (backend-function candidates)
  +(defun ssa-convert-locals (backend-function candidates debugp)
     (multiple-value-bind (basic-blocks bb-preds bb-succs)
         (build-cfg backend-function)
       (let ((dom (mezzano.compiler.backend.dominance:compute-dominance backend-function))
  
positive.code:                       (setf inst (next-instruction backend-function inst))))
                   (dolist (child (mezzano.compiler.backend.dominance:dominator-tree-children dom bb))
                     (rename child stack))))
          (insert-after backend-function candidate
                        (make-instance 'debug-bind-variable-instruction
                                       :variable (bind-local-ast candidate)
                                       :value (bind-local-value candidate)))
          (push candidate remove-me)
          (rename binding-bb
                  ;; Initial value is whatever value it was bound with.
  
negative.code:                       (make-instance 'store-local-instruction
                                       :local candidate
                                       :value phi))
          (when debugp
            ;; Debug updates too.
            (insert-after backend-function bb
                          (make-instance 'debug-update-variable-instruction
                                         :variable (bind-local-ast candidate)
                                         :value phi)))))
      ;; Now walk the dominator tree to rename values, starting at the binding's basic block.
      (let ((uses (build-use/def-maps backend-function))
            (remove-me '()))
  