0.8.5.43:
authorAlexey Dejneka <adejneka@comail.ru>
Sun, 16 Nov 2003 17:40:18 +0000 (17:40 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Sun, 16 Nov 2003 17:40:18 +0000 (17:40 +0000)
        * Fix miscellaneous PFD bugs
        ** REPLACE-TOPLEVEL-XEPS: update LEAF-REFS;
        ** SUBSTITUTE-LVAR-USES: if new LVAR is NIL, flush dests.

src/compiler/entry.lisp
src/compiler/ir1util.lisp
version.lisp-expr

index 6fdd25e..248d83e 100644 (file)
@@ -87,7 +87,9 @@
                        (setq res t))
                       (t
                        (setf (ref-leaf ref) new)
-                       (push ref (leaf-refs new)))))))))
+                       (push ref (leaf-refs new))
+                        (setf (leaf-refs lambda)
+                              (delq ref (leaf-refs lambda))))))))))
        (:toplevel
         (setq res t))))
     res))
index 3b9ebc3..242aae3 100644 (file)
@@ -80,7 +80,7 @@
 ;;; Just delete NODE from its LVAR uses; LVAR is preserved so it may
 ;;; be given a new use.
 (defun %delete-lvar-use (node)
-  (let* ((lvar (node-lvar node)))
+  (let ((lvar (node-lvar node)))
     (when lvar
       (if (listp (lvar-uses lvar))
           (let ((new-uses (delq node (lvar-uses lvar))))
   (declare (type lvar old)
            (type (or lvar null) new))
 
-  (do-uses (node old)
-    (%delete-lvar-use node)
-    (when new
-      (add-lvar-use node new)))
-
-  (when new (reoptimize-lvar new))
+  (cond (new (do-uses (node old)
+               (%delete-lvar-use node)
+               (add-lvar-use node new))
+             (reoptimize-lvar new))
+        (t (flush-dest old)))
   (values))
 \f
 ;;;; block starting/creation
index 8789cc0..6a2e73c 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.5.42"
+"0.8.5.43"