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.