diff --git a/compiler/ir1opt.lisp b/compiler/ir1opt.lisp index f986e80961419636dc1a46e9736a1bb212cd6a34..df3a06de27d6e3603d7742d06ba8ada6400118e6 100644 --- a/compiler/ir1opt.lisp +++ b/compiler/ir1opt.lisp @@ -159,6 +159,8 @@ (when prev (let* ((block (continuation-block prev)) (component (block-component block))) + (when (typep dest 'cif) + (setf (block-test-modified block) t)) (setf (block-reoptimize block) t) (setf (component-reoptimize component) t)))))) (do-uses (node cont) @@ -689,13 +691,13 @@ (continuation-dest (node-cont node))) (constant-fold-call node) (return-from ir1-optimize-combination))) - + (let ((fun (function-info-derive-type kind))) (when fun (let ((res (funcall fun node))) (when res (derive-node-type node res))))) - + (let ((fun (function-info-optimizer kind))) (unless (and fun (funcall fun node)) (dolist (x (function-info-transforms kind))