From: Alexey Dejneka Date: Sun, 16 Nov 2003 17:40:18 +0000 (+0000) Subject: 0.8.5.43: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=e6c4ea2ff29ce5e7ac334bdbbec222a2b27c4c7e;p=sbcl.git 0.8.5.43: * Fix miscellaneous PFD bugs ** REPLACE-TOPLEVEL-XEPS: update LEAF-REFS; ** SUBSTITUTE-LVAR-USES: if new LVAR is NIL, flush dests. --- diff --git a/src/compiler/entry.lisp b/src/compiler/entry.lisp index 6fdd25e..248d83e 100644 --- a/src/compiler/entry.lisp +++ b/src/compiler/entry.lisp @@ -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)) diff --git a/src/compiler/ir1util.lisp b/src/compiler/ir1util.lisp index 3b9ebc3..242aae3 100644 --- a/src/compiler/ir1util.lisp +++ b/src/compiler/ir1util.lisp @@ -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)))) @@ -169,12 +169,11 @@ (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)) ;;;; block starting/creation diff --git a/version.lisp-expr b/version.lisp-expr index 8789cc0..6a2e73c 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"