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
|