From: Alexey D. <ade...@us...> - 2004-04-10 10:38:25
|
Update of /cvsroot/sbcl/sbcl/src/compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7065/src/compiler Modified Files: Tag: stack-analysis-branch dfo.lisp node.lisp physenvanal.lisp Log Message: 0.8.8.23.stack.4: * Fix bug MISC.295: in DF ordering take into account hidden control transfers to NLEs. Index: dfo.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/dfo.lisp,v retrieving revision 1.18 retrieving revision 1.18.2.1 diff -u -d -r1.18 -r1.18.2.1 --- dfo.lisp 16 Nov 2003 10:19:13 -0000 1.18 +++ dfo.lisp 10 Apr 2004 10:24:58 -0000 1.18.2.1 @@ -91,6 +91,18 @@ (setf (block-flag block) t) (dolist (succ (block-succ block)) (find-dfo-aux succ head component)) + (when (component-nlx-info-generated-p component) + ;; FIXME: We also need (and do) this walk before physenv + ;; analysis, but at that time we are probably not very + ;; interested in the actual DF order. + ;; + ;; TODO: It is probable that one of successors have the same (or + ;; similar) set of NLXes; try to shorten the walk (but think + ;; about a loop, the only exit from which is non-local). + (map-block-nlxes (lambda (nlx-info) + (let ((nle (nlx-info-target nlx-info))) + (find-dfo-aux nle head component))) + block)) (remove-from-dfo block) (add-to-dfo block head)) (values)) Index: node.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/node.lisp,v retrieving revision 1.49.2.1 retrieving revision 1.49.2.2 diff -u -d -r1.49.2.1 -r1.49.2.2 --- node.lisp 13 Mar 2004 19:39:15 -0000 1.49.2.1 +++ node.lisp 10 Apr 2004 10:24:58 -0000 1.49.2.2 @@ -373,7 +373,8 @@ ;; inline expansion. Unlike NEW-FUNCTIONALS, this is not disjoint ;; from COMPONENT-LAMBDAS. (reanalyze-functionals nil :type list) - (delete-blocks nil :type list)) + (delete-blocks nil :type list) + (nlx-info-generated-p nil :type boolean)) (defprinter (component :identity t) name #!+sb-show id Index: physenvanal.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/physenvanal.lisp,v retrieving revision 1.12.10.1 retrieving revision 1.12.10.2 diff -u -d -r1.12.10.1 -r1.12.10.2 --- physenvanal.lisp 13 Mar 2004 19:39:15 -0000 1.12.10.1 +++ physenvanal.lisp 10 Apr 2004 10:24:58 -0000 1.12.10.2 @@ -50,6 +50,7 @@ (setf (functional-kind fun) nil) (delete-functional fun))))) + (setf (component-nlx-info-generated-p component) t) (values)) ;;; This is to be called on a COMPONENT with top level LAMBDAs before |