From: Alexey D. <ade...@us...> - 2002-11-16 10:26:20
|
Update of /cvsroot/sbcl/sbcl In directory usw-pr-cvs1:/tmp/cvs-serv27978 Modified Files: BUGS NEWS version.lisp-expr Log Message: 0.7.9.52: * Fixed bug: loop-for-as-package does not require package to be explicitely specified; * PRINT-IR2-BLOCKS shows corresponding IR1 block numbers. Index: BUGS =================================================================== RCS file: /cvsroot/sbcl/sbcl/BUGS,v retrieving revision 1.236 retrieving revision 1.237 diff -u -d -r1.236 -r1.237 --- BUGS 15 Nov 2002 15:21:57 -0000 1.236 +++ BUGS 16 Nov 2002 10:26:13 -0000 1.237 @@ -522,6 +522,40 @@ internal error, failed AVER: "(COMMON-LISP:EQ (SB!C::TN-ENVIRONMENT SB!C:TN) SB!C::TN-ENV)" + This examples better illustrates the problem: + + (defun tst () + (declare (optimize (speed 2) (debug 3))) + (flet ((m1 () + (bar (if (foo) 1 2)) + (let ((x (foo))) + (bar x (list x))))) + (if (catch nil) + (m1) + (m1)))) + + (X is allocated in the physical environment of M1; X is :WRITE in + the call of LET [convert-to-global]; IF makes sure that a block + exists in M1 before this call.) + + Because X is :DEBUG-ENVIRONMENT, it is :LIVE by default in all + blocks in the environment, particularly it is :LIVE in the start of + M1 (where it is not yet :WRITE) [setup-environment-tn-conflicts]. + + Then :LIVE is propagated backwards, i.e. into the caller of M1 + where X does not exist [lifetime-flow-analysis]. + + (CATCH NIL) causes all TNs to be saved; Python fails on saving + non-existent variable; if it is replaced with (FOO), the problem + appears when debugging TST: LIST-LOCALS says + + debugger invoked on condition of type SB-DI:UNKNOWN-DEBUG-VAR: + + #<SB-DI::COMPILED-DEBUG-VAR X 0 + {905FF7D}> is not in #<SB-DI::COMPILED-DEBUG-FUNCTION TST>. + + (in those old versions, in which debugger worked :-(). + 117: When the compiler inline expands functions, it may be that different kinds of return values are generated from different code branches. Index: NEWS =================================================================== RCS file: /cvsroot/sbcl/sbcl/NEWS,v retrieving revision 1.200 retrieving revision 1.201 diff -u -d -r1.200 -r1.201 --- NEWS 15 Nov 2002 15:21:57 -0000 1.200 +++ NEWS 16 Nov 2002 10:26:14 -0000 1.201 @@ -1397,7 +1397,9 @@ symbol-macro places; ** NCONC accepts any object as its last argument ** :COUNT argument to sequence functions may be BIGNUM (thanks to - Gerd Moellman) + Gerd Moellman); + ** Loop-package does not require a package to be explicitely + specified; * fixed bug 166: compiler preserves "there is a way to go" invariant when deleting code. * fixed bug 172: macro lambda lists with required arguments after Index: version.lisp-expr =================================================================== RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v retrieving revision 1.659 retrieving revision 1.660 diff -u -d -r1.659 -r1.660 --- version.lisp-expr 15 Nov 2002 15:21:57 -0000 1.659 +++ version.lisp-expr 16 Nov 2002 10:26:14 -0000 1.660 @@ -18,4 +18,4 @@ ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.9.51" +"0.7.9.52" |