diff --git a/compiler/ir1opt.lisp b/compiler/ir1opt.lisp index 294fcf20e91771f03b0720283483a48d877e1d17..30a33568d773b2edd871443b61b1e77d20ad57ec 100644 --- a/compiler/ir1opt.lisp +++ b/compiler/ir1opt.lisp @@ -438,8 +438,14 @@ (setf (block-end-cleanup block1) (block-end-cleanup block2)) - (setf (block-reoptimize block1) - (or (block-reoptimize block1) (block-reoptimize block2))) + (when (block-reoptimize block2) + (setf (block-reoptimize block1) t)) + (when (block-flush-p block2) + (setf (block-flush-p block1) t)) + (when (block-type-check block2) + (setf (block-type-check block1) t)) + (assert (not (block-delete-p block2))) + (setf (block-type-asserted block1) t) (setf (block-test-modified block1) t) @@ -1018,7 +1024,7 @@ dest (not (typep dest '(or creturn exit mv-combination))) (eq (lambda-home (block-lambda (node-block ref))) - (lambda-var-home var))) + (lambda-home (lambda-var-home var)))) (assert-continuation-type arg (continuation-asserted-type cont)) (change-ref-leaf ref (find-constant nil)) (substitute-continuation arg cont)