X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fir1opt.lisp;h=d585c2076d9903d6f5a6480fbda9488da80c3f0b;hb=d76c81b0ca4dcfc99f0cd805f5c20493fa80b2b6;hp=2ffc3850318564710acea8063412b4b8a6425330;hpb=a080d7c4a2690d01e334bfa81a0375384a0f2dac;p=sbcl.git diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp index 2ffc385..d585c20 100644 --- a/src/compiler/ir1opt.lisp +++ b/src/compiler/ir1opt.lisp @@ -520,10 +520,7 @@ :lossage-fun nil :unwinnage-fun nil)) (ir1-attributep attr unsafely-flushable))) - (flush-dest (combination-fun node)) - (dolist (arg (combination-args node)) - (flush-dest arg)) - (unlink-node node)))))) + (flush-combination node)))))) (mv-combination (when (eq (basic-combination-kind node) :local) (let ((fun (combination-lambda node))) @@ -1272,7 +1269,8 @@ (setf (continuation-next cont) next) ;; FIXME: type checking? (reoptimize-continuation cont) - (reoptimize-continuation prev)))) + (reoptimize-continuation prev) + (flush-combination call)))) (t (let ((dummies (make-gensym-list (length args)))) (transform-call call @@ -1739,6 +1737,8 @@ (when (and (combination-p use) (eq (continuation-fun-name (combination-fun use)) 'list)) + + ;; FIXME: VALUES might not satisfy an assertion on NODE-CONT. (change-ref-leaf (continuation-use (combination-fun node)) (find-free-fun 'values "in a strange place")) (setf (combination-kind node) :full)