(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))
;;; 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
;;; 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"