anchor.diff:      (do* ((inst (ir:first-instruction backend-function) next-inst)
             (next-inst (ir:next-instruction backend-function inst) (if inst (ir:next-instruction backend-function inst))))
            ((null inst))
  -      (let ((next (or (lower-predicate-builtin backend-function inst uses defs)
  -                      (lower-builtin backend-function inst defs))))
  -        (when next
  -          (setf next-inst next))))))
  +      (multiple-value-bind (next did-something)
  +          (lower-predicate-builtin backend-function inst uses defs)
  +        (cond (did-something
  +               (setf next-inst next))
  +              (t
  +               (let ((next (lower-builtin backend-function inst defs)))
  +                 (when next
  +                   (setf next-inst next)))))))))
  
positive.code:                             backend-function inst
                              defs
                              (ir:call-arguments inst)))
              (return-from lower-predicate-builtin nil))
            (let ((pred (first (builtin-result-list builtin))))
              (ir:insert-before
               backend-function inst
  
negative.code:             (let ((advance (ir:next-instruction backend-function next-inst)))
                (ir:remove-instruction backend-function inst)
                (ir:remove-instruction backend-function next-inst)
                (values advance t))))))))
  
  (defun lower-builtin (backend-function inst defs)
    (let ((builtin (and (typep inst '(or
  