From: Alexey D. <ade...@us...> - 2005-02-23 08:31:30
|
Update of /cvsroot/sbcl/sbcl/src/compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12053/src/compiler Modified Files: constraint.lisp ir1util.lisp Log Message: 0.8.19.38: * Fix MISC.535: CONSTANT-LVAR-P looks through CASTs. * Workaround lack of recursion recognition in XC for PRINCIPAL-LVAR-USE. Index: constraint.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/constraint.lisp,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- constraint.lisp 30 Oct 2004 18:29:50 -0000 1.23 +++ constraint.lisp 23 Feb 2005 08:31:19 -0000 1.24 @@ -193,7 +193,7 @@ ((constant-lvar-p arg2) (add-complement-constraints if 'eql var1 (ref-leaf - (lvar-uses arg2)) + (principal-lvar-use arg2)) nil))))) ((< >) (let* ((arg1 (first args)) Index: ir1util.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/ir1util.lisp,v retrieving revision 1.103 retrieving revision 1.104 diff -u -d -r1.103 -r1.104 --- ir1util.lisp 12 Jan 2005 17:57:15 -0000 1.103 +++ ir1util.lisp 23 Feb 2005 08:31:20 -0000 1.104 @@ -63,10 +63,13 @@ (list uses)))) (defun principal-lvar-use (lvar) - (let ((use (lvar-uses lvar))) - (if (cast-p use) - (principal-lvar-use (cast-value use)) - use))) + (labels ((plu (lvar) + (declare (type lvar lvar)) + (let ((use (lvar-uses lvar))) + (if (cast-p use) + (plu (cast-value use)) + use)))) + (plu lvar))) ;;; Update lvar use information so that NODE is no longer a use of its ;;; LVAR. |