0.8alpha.0.21:
[sbcl.git] / src / compiler / ir1opt.lisp
index 2ffc385..d585c20 100644 (file)
                                                   :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)))
                  (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
     (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)