0.8.1.29:
[sbcl.git] / src / compiler / ir1util.lisp
index 90de784..ea581fb 100644 (file)
     (when last
       (let ((cont (node-cont last)))
         (delete-continuation-use last)
-        (if (eq (continuation-kind cont) :unused)
-            (delete-continuation cont)
-            (reoptimize-continuation cont)))))
+        (acond ((eq (continuation-kind cont) :unused)
+                (delete-continuation cont))
+               ((and (null (find-uses cont))
+                     (continuation-dest cont))
+                (mark-for-deletion (node-block it)))
+               ((reoptimize-continuation cont))))))
 
   (dolist (b (block-pred block))
     (unlink-blocks b block)
       (cast
        (flush-dest (cast-value node))))
 
-       (delete-continuation (node-prev node)))
+    (delete-continuation (node-prev node)))
 
   (remove-from-dfo block)
   (values))