0.8alpha.0.1:
authorAlexey Dejneka <adejneka@comail.ru>
Wed, 30 Apr 2003 16:29:45 +0000 (16:29 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Wed, 30 Apr 2003 16:29:45 +0000 (16:29 +0000)
SB-C::REINIT-LAMBDA-PHYSENV: Always clean INDIRECT flag on
lambda vars.

src/compiler/physenvanal.lisp
version.lisp-expr

index 8b4bb25..1da7274 100644 (file)
 ;;; If FUN has no physical environment, assign one, otherwise clean up
 ;;; the old physical environment, removing/flagging variables that
 ;;; have no sets or refs. If a var has no references, we remove it
-;;; from the closure. If it has no sets, we clear the INDIRECT flag.
-;;; This is necessary because pre-analysis is done before
-;;; optimization.
+;;; from the closure. We always clear the INDIRECT flag. This is
+;;; necessary because pre-analysis is done before optimization.
 (defun reinit-lambda-physenv (fun)
   (let ((old (lambda-physenv (lambda-home fun))))
     (cond (old
                            (physenv-closure old)))
           (flet ((clear (fun)
                    (dolist (var (lambda-vars fun))
-                     (unless (lambda-var-sets var)
-                       (setf (lambda-var-indirect var) nil)))))
+                     (setf (lambda-var-indirect var) nil))))
             (clear fun)
             (map nil #'clear (lambda-lets fun))))
          (t
 
          (let ((set-physenv (get-node-physenv set)))
            (unless (eq set-physenv physenv)
-             (setf did-something t
+              (setf did-something t
                    (lambda-var-indirect var) t)
              (close-over var set-physenv physenv))))))
     did-something))
index af8cd51..22de979 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.8alpha.0"
+"0.8alpha.0.1"