From 26e00165075861c08b333c04af19e50bd8f65649 Mon Sep 17 00:00:00 2001 From: Alexey Dejneka Date: Wed, 30 Apr 2003 16:29:45 +0000 Subject: [PATCH] 0.8alpha.0.1: SB-C::REINIT-LAMBDA-PHYSENV: Always clean INDIRECT flag on lambda vars. --- src/compiler/physenvanal.lisp | 10 ++++------ version.lisp-expr | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/compiler/physenvanal.lisp b/src/compiler/physenvanal.lisp index 8b4bb25..1da7274 100644 --- a/src/compiler/physenvanal.lisp +++ b/src/compiler/physenvanal.lisp @@ -123,9 +123,8 @@ ;;; 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 @@ -136,8 +135,7 @@ (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 @@ -184,7 +182,7 @@ (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)) diff --git a/version.lisp-expr b/version.lisp-expr index af8cd51..22de979 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.8alpha.0" +"0.8alpha.0.1" -- 1.7.10.4