Compiler hangs when compiling unused local function

Bug #1835599 reported by Mark Cox
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
SBCL
Fix Released
Undecided
Unassigned

Bug Description

The following code causes the SBCL compiler to hang. All versions of SBCL from 1.4.11 to 1.5.4 hang. Compilation succeeds on SBCL 1.4.10.

;; ./run-sbcl.sh --no-userinit --eval '(progn (print *features*) (compile-file "/tmp/example3.lisp"))'
(defun execute (object)
  (funcall object))

(defun test ()
  (let* ((vector (make-array 10 :initial-element 0)))
    (labels ((make-incrementer (index count)
               (lambda ()
                 (incf (aref vector index))
                 (when (< (aref vector index) count)
                   (execute (make-incrementer index count)))))))))

#|
$ uname -a
Darwin 192-168-1-3.tpgi.com.au 17.7.0 Darwin Kernel Version 17.7.0: Wed Apr 24 21:17:24 PDT 2019; root:xnu-4570.71.45~1/RELEASE_X86_64 x86_64
|#

#| Output SBCL 1.4.11

This is SBCL 1.4.11, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.

(:X86-64 :64-BIT :64-BIT-REGISTERS :ALIEN-CALLBACKS :ANSI-CL :ASH-RIGHT-VOPS
 :BSD :C-STACK-IS-CONTROL-STACK :CALL-SYMBOL :COMMON-LISP
 :COMPACT-INSTANCE-HEADER :COMPARE-AND-SWAP-VOPS :COMPLEX-FLOAT-VOPS
 :CYCLE-COUNTER :DARWIN :DARWIN9-OR-BETTER :FLOAT-EQL-VOPS
 :FP-AND-PC-STANDARD-SAVE :GENCGC :IEEE-FLOATING-POINT :IMMOBILE-CODE
 :IMMOBILE-SPACE :INLINE-CONSTANTS :INODE64 :INTEGER-EQL-VOP :LINKAGE-TABLE
 :LITTLE-ENDIAN :MACH-EXCEPTION-HANDLER :MACH-O :MEMORY-BARRIER-VOPS
 :MULTIPLY-HIGH-VOPS :OS-PROVIDES-BLKSIZE-T :OS-PROVIDES-DLADDR
 :OS-PROVIDES-DLOPEN :OS-PROVIDES-PUTWC :OS-PROVIDES-SUSECONDS-T
 :PACKAGE-LOCAL-NICKNAMES :RAW-INSTANCE-INIT-VOPS :RAW-SIGNED-WORD
 :RELOCATABLE-HEAP :SB-CORE-COMPRESSION :SB-DOC :SB-EVAL :SB-LDB
 :SB-PACKAGE-LOCKS :SB-SIMD-PACK :SB-SOURCE-LOCATIONS :SB-THREAD :SB-UNICODE
 :SBCL :STACK-ALLOCATABLE-CLOSURES :STACK-ALLOCATABLE-FIXED-OBJECTS
 :STACK-ALLOCATABLE-LISTS :STACK-ALLOCATABLE-VECTORS
 :STACK-GROWS-DOWNWARD-NOT-UPWARD :SYMBOL-INFO-VOPS :UD2-BREAKPOINTS
 :UNBIND-N-VOP :UNDEFINED-FUN-RESTARTS :UNIX :UNWIND-TO-FRAME-AND-CALL-VOP)
; compiling file "/private/tmp/example3.lisp" (written 06 JUL 2019 05:28:15 PM):
; compiling (DEFUN EXECUTE ...)
; compiling (DEFUN TEST ...)
debugger invoked on a SB-SYS:INTERACTIVE-INTERRUPT in thread
#<THREAD "main thread" RUNNING {10005505B3}>:
  Interactive interrupt at #x21BEBB76.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE] Return from SB-UNIX:SIGINT.
  1: Ignore runtime option --eval "(progn (print *features*) (compile-file \"/tmp/example3.lisp\"))".
  2: [ABORT ] Skip rest of --eval and --load options.
  3: Skip to toplevel READ/EVAL/PRINT loop.
  4: [EXIT ] Exit SBCL (calling #'EXIT, killing the process).

(SB-C::LAMBDA-VAR-REF-LVAR #<SB-C::REF :%SOURCE-NAME COUNT :LEAF #<SB-C::LAMBDA-VAR :%SOURCE-NAME COUNT :TYPE #<SB-KERNEL:UNION-TYPE REAL> {100187D883}> {10018867B3}>)
0] :backtrace

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005505B3}>
0: (SB-C::LAMBDA-VAR-REF-LVAR #<SB-C::REF :%SOURCE-NAME COUNT :LEAF #<SB-C::LAMBDA-VAR :%SOURCE-NAME COUNT :TYPE #<SB-KERNEL:UNION-TYPE REAL> {100187D883}> {10018867B3}>)
1: (SB-C::PRINCIPAL-LVAR-REF-USE #<SB-C::LVAR 1 {1001885C93}>)
2: (SB-C::ARRAY-IN-BOUNDS-P-CONSTRAINTS #S(SB-C::CONSET :VECTOR #*10000000110000000000001111000000 :MIN 0 :MAX 26) #<SB-C::LVAR 2 {1001885723}> NIL #<SB-C::LVAR 1 {1001885C93}>)
3: ((FLET SB-C::HANDLE-ARRAY-IN-BOUNDS-P :IN SB-C::ADD-TEST-CONSTRAINTS) #<SB-C::LVAR 2 {1001885723}> NIL #<SB-C::LVAR 1 {1001885C93}>)
4: (SB-C::ADD-TEST-CONSTRAINTS #<SB-C::COMBINATION :FUN #<SB-C::REF :LEAF #<SB-C::GLOBAL-VAR :%SOURCE-NAME < :TYPE #1=#<SB-KERNEL:FUN-TYPE (FUNCTION (REAL &REST REAL) (VALUES BOOLEAN &OPTIONAL))> :DEFINED-TYPE #1# :WHERE-FROM :DECLARED :KIND :GLOBAL-FUNCTION {10018840D3}> {10018845D3}> :ARGS (#<CAST :%TYPE-CHECK T :VALUE #<SB-C::LVAR 3 {1001884713}> :ASSERTED-TYPE #2=#<SB-KERNEL:UNION-TYPE REAL> :TYPE-TO-CHECK #2# {1001885B63}> #<SB-C::REF :%SOURCE-NAME COUNT :LEAF #<SB-C::LAMBDA-VAR :%SOURCE-NAME COUNT :TYPE #2# {100187D883}> {1001884F13}>) {1001884653}> #<SB-C::CIF :TEST #<SB-C::COMBINATION :FUN #<SB-C::REF :LEAF #<SB-C::GLOBAL-VAR :%SOURCE-NAME < :TYPE #1=#<SB-KERNEL:FUN-TYPE (FUNCTION # #)> :DEFINED-TYPE #1# :WHERE-FROM :DECLARED :KIND :GLOBAL-FUNCTION {10018840D3}> {10018845D3}> :ARGS (#<CAST :%TYPE-CHECK T :VALUE #<SB-C::LVAR 3 {1001884713}> :ASSERTED-TYPE #2=#<SB-KERNEL:UNION-TYPE REAL> :TYPE-TO-CHECK #2# {1001885B63}> #<SB-C::REF :%SOURCE-NAME COUNT :LEAF #<SB-C::LAMBDA-VAR :%SOURCE-NAME COUNT :TYPE #2# {100187D883}> {1001884F13}>) {1001884653}> :CONSEQUENT #<SB-C::CBLOCK 10 :START c4 {1001883EF3}> :ALTERNATIVE #<SB-C::CBLOCK 7 :START c5 {1001883FC3}> {1001884063}> #S(SB-C::CONSET :VECTOR #*10000000110000000000001111000000 :MIN 0 :MAX 26))
5: (SB-C::FIND-BLOCK-TYPE-CONSTRAINTS #<SB-C::CBLOCK 11 :START c6 {100187E893}> T)
6: (SB-C::FIND-AND-PROPAGATE-CONSTRAINTS #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {100188DFF3}>)
7: (SB-C::CONSTRAINT-PROPAGATE #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {100188DFF3}>)
8: (SB-C::IR1-PHASES #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {100188DFF3}>)
9: (SB-C::COMPILE-COMPONENT #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {100188DFF3}>)
10: (SB-C::%COMPILE (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* ((VECTOR #)) (LABELS (#))))) #<SB-FASL:FASL-OUTPUT "/tmp/example3.fasl"> :NAME NIL :PATH ((FUNCTION #1=(SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #)))) #1# #2=(SB-IMPL::%DEFUN (QUOTE TEST) #1#) #2# (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL (QUOTE NIL))) #2#) SB-C::ORIGINAL-SOURCE-START 0 1))
11: (SB-C::FOPCOMPILE-FUNCTION #<SB-FASL:FASL-OUTPUT "/tmp/example3.fasl"> (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* ((VECTOR #)) (LABELS (#))))) ((FUNCTION #1=(SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #)))) #1# #2=(SB-IMPL::%DEFUN (QUOTE TEST) #1#) #2# (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL (QUOTE NIL))) #2#) SB-C::ORIGINAL-SOURCE-START 0 1) T)
12: (SB-C::FOPCOMPILE (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* (#) (LABELS #))))) (#1=(SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #)))) (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL (QUOTE NIL))) #1#) SB-C::ORIGINAL-SOURCE-START 0 1) NIL NIL)
13: (SB-C::CONVERT-AND-MAYBE-COMPILE (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* (#) (LABELS #))))) (#1=(SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #)))) (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL (QUOTE NIL))) #1#) SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
14: ((FLET SB-C::DEFAULT-PROCESSOR :IN SB-C::PROCESS-TOPLEVEL-FORM) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* (#) (LABELS #))))))
15: (SB-C::PROCESS-TOPLEVEL-FORM (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* (#) (LABELS #))))) ((PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL (QUOTE NIL))) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE #) (BLOCK TEST #)))) SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
16: (SB-C::PROCESS-TOPLEVEL-PROGN ((EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL (QUOTE NIL))) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #))))) ((PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL (QUOTE NIL))) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE #) (BLOCK TEST #)))) SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
17: (SB-C::PROCESS-TOPLEVEL-FORM (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL (QUOTE NIL))) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #))))) (SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
18: ((FLET SB-C::DEFAULT-PROCESSOR :IN SB-C::PROCESS-TOPLEVEL-FORM) (DEFUN TEST NIL (LET* ((VECTOR (MAKE-ARRAY 10 :INITIAL-ELEMENT 0))) (LABELS ((MAKE-INCREMENTER # #))))))
19: (SB-C::PROCESS-TOPLEVEL-FORM (DEFUN TEST NIL (LET* ((VECTOR (MAKE-ARRAY 10 :INITIAL-ELEMENT 0))) (LABELS ((MAKE-INCREMENTER # #))))) (SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
20: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-C::SUB-SUB-COMPILE-FILE) (DEFUN TEST NIL (LET* ((VECTOR (MAKE-ARRAY 10 :INITIAL-ELEMENT 0))) (LABELS ((MAKE-INCREMENTER # #))))) :CURRENT-INDEX 1)
21: (SB-C::%DO-FORMS-FROM-INFO #<FUNCTION (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-C::SUB-SUB-COMPILE-FILE) {21E6445B}> #<SB-C::SOURCE-INFO {10018397D3}> SB-C::INPUT-ERROR-IN-COMPILE-FILE)
22: (SB-C::SUB-SUB-COMPILE-FILE #<SB-C::SOURCE-INFO {10018397D3}>)
23: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-C::SUB-COMPILE-FILE))
24: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
25: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-C::SUB-COMPILE-FILE) {4FF36B}> #<SB-THREAD:MUTEX "World Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10005505B3}>> T NIL)
26: ((FLET "LAMBDA0" :IN "SYS:SRC;COMPILER;MAIN.LISP"))
27: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
28: (SB-C::SUB-COMPILE-FILE #<SB-C::SOURCE-INFO {10018397D3}>)
29: (COMPILE-FILE "/tmp/example3.lisp" :OUTPUT-FILE NIL :VERBOSE NIL :PRINT NIL :EXTERNAL-FORMAT :DEFAULT :TRACE-FILE NIL :BLOCK-COMPILE NIL :EMIT-CFASL NIL)
30: (SB-INT:SIMPLE-EVAL-IN-LEXENV (COMPILE-FILE "/tmp/example3.lisp") #<NULL-LEXENV>)
31: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PROGN (PRINT *FEATURES*) (COMPILE-FILE "/tmp/example3.lisp")) #<NULL-LEXENV>)
32: (EVAL (PROGN (PRINT *FEATURES*) (COMPILE-FILE "/tmp/example3.lisp")))
33: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(progn (print *features*) (compile-file \"/tmp/example3.lisp\"))")))
34: (SB-IMPL::TOPLEVEL-INIT)
35: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
36: ((FLET "WITHOUT-INTERRUPTS-BODY-34" :IN SAVE-LISP-AND-DIE))
37: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))
|#

#| Output SBCL 1.5.4

This is SBCL 1.5.4, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.

(:X86-64 :64-BIT :64-BIT-REGISTERS :ALIEN-CALLBACKS :ANSI-CL :AVX2 :BSD
 :C-STACK-IS-CONTROL-STACK :CALL-SYMBOL :COMMON-LISP :COMPACT-INSTANCE-HEADER
 :COMPARE-AND-SWAP-VOPS :CYCLE-COUNTER :DARWIN :FP-AND-PC-STANDARD-SAVE :GENCGC
 :IEEE-FLOATING-POINT :IMMOBILE-CODE :IMMOBILE-SPACE :INODE64 :INTEGER-EQL-VOP
 :LINKAGE-TABLE :LITTLE-ENDIAN :MACH-EXCEPTION-HANDLER :MACH-O
 :OS-PROVIDES-BLKSIZE-T :OS-PROVIDES-DLADDR :OS-PROVIDES-DLOPEN
 :OS-PROVIDES-PUTWC :OS-PROVIDES-SUSECONDS-T :PACKAGE-LOCAL-NICKNAMES
 :RELOCATABLE-HEAP :SB-CORE-COMPRESSION :SB-DOC :SB-EVAL :SB-LDB
 :SB-PACKAGE-LOCKS :SB-SIMD-PACK :SB-SIMD-PACK-256 :SB-SOURCE-LOCATIONS
 :SB-THREAD :SB-UNICODE :SBCL :STACK-ALLOCATABLE-CLOSURES
 :STACK-ALLOCATABLE-FIXED-OBJECTS :STACK-ALLOCATABLE-LISTS
 :STACK-ALLOCATABLE-VECTORS :STACK-GROWS-DOWNWARD-NOT-UPWARD
 :UNDEFINED-FUN-RESTARTS :UNIX :UNWIND-TO-FRAME-AND-CALL-VOP)
; compiling file "/private/tmp/example3.lisp" (written 06 JUL 2019 05:38:22 PM):
; compiling (DEFUN EXECUTE ...)
; compiling (DEFUN TEST ...)^C
debugger invoked on a SB-SYS:INTERACTIVE-INTERRUPT in thread
#<THREAD "main thread" RUNNING {10005004F3}>:
  Interactive interrupt at #x21BEE45E.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE] Return from SB-UNIX:SIGINT.
  1: Ignore runtime option --eval "(progn (print *features*) (compile-file \"/tmp/example3.lisp\"))".
  2: [ABORT ] Skip rest of --eval and --load options.
  3: Skip to toplevel READ/EVAL/PRINT loop.
  4: [EXIT ] Exit SBCL (calling #'EXIT, killing the process).

(SB-C::LAMBDA-VAR-REF-LVAR #<SB-C::REF :%SOURCE-NAME COUNT :LEAF #<SB-C::LAMBDA-VAR :%SOURCE-NAME COUNT :TYPE #<SB-KERNEL:UNION-TYPE REAL> {100152B643}> {1001534773}>)
0] :Backtrace

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005004F3}>
0: (SB-C::LAMBDA-VAR-REF-LVAR #<SB-C::REF :%SOURCE-NAME COUNT :LEAF #<SB-C::LAMBDA-VAR :%SOURCE-NAME COUNT :TYPE #<SB-KERNEL:UNION-TYPE REAL> {100152B643}> {1001534773}>)
1: (SB-C::PRINCIPAL-LVAR-REF-USE #<SB-C::LVAR 1 {1001533C53}>)
2: (SB-C::ARRAY-IN-BOUNDS-P-CONSTRAINTS #S(SB-C::CONSET :VECTOR #*10000000110000000000001111000000 :MIN 0 :MAX 26) #<SB-C::LVAR 2 {10015336B3}> NIL #<SB-C::LVAR 1 {1001533C53}>)
3: ((FLET SB-C::HANDLE-ARRAY-IN-BOUNDS-P :IN SB-C::ADD-TEST-CONSTRAINTS) #<SB-C::LVAR 2 {10015336B3}> NIL #<SB-C::LVAR 1 {1001533C53}>)
4: (SB-C::ADD-TEST-CONSTRAINTS #<SB-C::COMBINATION :FUN #<SB-C::REF :LEAF #<SB-C::GLOBAL-VAR :%SOURCE-NAME < :TYPE #1=#<SB-KERNEL:FUN-TYPE (FUNCTION (REAL &REST REAL) (VALUES BOOLEAN &OPTIONAL))> :DEFINED-TYPE #1# :WHERE-FROM :DECLARED :KIND :GLOBAL-FUNCTION {1001532063}> {1001532563}> :ARGS (#<CAST :%TYPE-CHECK T :VALUE #<SB-C::LVAR 3 {10015326A3}> :ASSERTED-TYPE #2=#<SB-KERNEL:UNION-TYPE REAL> :TYPE-TO-CHECK #2# {1001533B23}> #<SB-C::REF :%SOURCE-NAME COUNT :LEAF #<SB-C::LAMBDA-VAR :%SOURCE-NAME COUNT :TYPE #2# {100152B643}> {1001532EA3}>) {10015325E3}> #<SB-C::CIF :TEST #<SB-C::COMBINATION :FUN #<SB-C::REF :LEAF #<SB-C::GLOBAL-VAR :%SOURCE-NAME < :TYPE #1=#<SB-KERNEL:FUN-TYPE (FUNCTION # #)> :DEFINED-TYPE #1# :WHERE-FROM :DECLARED :KIND :GLOBAL-FUNCTION {1001532063}> {1001532563}> :ARGS (#<CAST :%TYPE-CHECK T :VALUE #<SB-C::LVAR 3 {10015326A3}> :ASSERTED-TYPE #2=#<SB-KERNEL:UNION-TYPE REAL> :TYPE-TO-CHECK #2# {1001533B23}> #<SB-C::REF :%SOURCE-NAME COUNT :LEAF #<SB-C::LAMBDA-VAR :%SOURCE-NAME COUNT :TYPE #2# {100152B643}> {1001532EA3}>) {10015325E3}> :CONSEQUENT #<SB-C::CBLOCK 10 :START c4 {1001531E83}> :ALTERNATIVE #<SB-C::CBLOCK 7 :START c5 {1001531F53}> {1001531FF3}> #S(SB-C::CONSET :VECTOR #*10000000110000000000001111000000 :MIN 0 :MAX 26))
5: (SB-C::FIND-BLOCK-TYPE-CONSTRAINTS #<SB-C::CBLOCK 11 :START c6 {100152C683}> T)
6: (SB-C::FIND-AND-PROPAGATE-CONSTRAINTS #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {10015399B3}>)
7: (SB-C::CONSTRAINT-PROPAGATE #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {10015399B3}>)
8: (SB-C::IR1-OPTIMIZE-PHASE-1 #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {10015399B3}>)
9: (SB-C::IR1-PHASES #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {10015399B3}>)
10: (SB-C::COMPILE-COMPONENT #<SB-C:COMPONENT :NAME (SB-C::XEP (LAMBDA NIL :IN TEST)) {10015399B3}>)
11: (SB-C::%COMPILE (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* ((VECTOR #)) (LABELS (#))))) #<SB-FASL:FASL-OUTPUT "/tmp/example3.fasl"> :NAME NIL :PATH ((FUNCTION #1=(SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #)))) #1# #2=(SB-IMPL::%DEFUN (QUOTE TEST) #1#) #2# (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL NIL)) #2#) SB-C::ORIGINAL-SOURCE-START 0 1))
12: (SB-C::FOPCOMPILE-FUNCTION #<SB-FASL:FASL-OUTPUT "/tmp/example3.fasl"> (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* ((VECTOR #)) (LABELS (#))))) ((FUNCTION #1=(SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #)))) #1# #2=(SB-IMPL::%DEFUN (QUOTE TEST) #1#) #2# (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL NIL)) #2#) SB-C::ORIGINAL-SOURCE-START 0 1) T)
13: (SB-C::FOPCOMPILE (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* (#) (LABELS #))))) (#1=(SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #)))) (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL NIL)) #1#) SB-C::ORIGINAL-SOURCE-START 0 1) NIL T)
14: (SB-C::CONVERT-AND-MAYBE-COMPILE (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* (#) (LABELS #))))) (#1=(SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #)))) (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL NIL)) #1#) SB-C::ORIGINAL-SOURCE-START 0 1) T)
15: (SB-C::PROCESS-TOPLEVEL-FORM (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* (#) (LABELS #))))) ((PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL NIL)) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE #) (BLOCK TEST #)))) SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
16: (SB-C::PROCESS-TOPLEVEL-PROGN ((EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL NIL)) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #))))) ((PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL NIL)) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE #) (BLOCK TEST #)))) SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
17: (SB-C::PROCESS-TOPLEVEL-FORM (PROGN (EVAL-WHEN (:COMPILE-TOPLEVEL) (SB-C:%COMPILER-DEFUN (QUOTE TEST) T NIL NIL)) (SB-IMPL::%DEFUN (QUOTE TEST) (SB-INT:NAMED-LAMBDA TEST NIL (DECLARE (SB-C::TOP-LEVEL-FORM)) (BLOCK TEST (LET* # #))))) (SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
18: (SB-C::PROCESS-TOPLEVEL-FORM (DEFUN TEST NIL (LET* ((VECTOR (MAKE-ARRAY 10 :INITIAL-ELEMENT 0))) (LABELS ((MAKE-INCREMENTER # #))))) (SB-C::ORIGINAL-SOURCE-START 0 1) NIL)
19: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-C::SUB-COMPILE-FILE) (DEFUN TEST NIL (LET* ((VECTOR (MAKE-ARRAY 10 :INITIAL-ELEMENT 0))) (LABELS ((MAKE-INCREMENTER # #))))) :CURRENT-INDEX 1)
20: (SB-C::%DO-FORMS-FROM-INFO #<FUNCTION (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-C::SUB-COMPILE-FILE) {21D1554B}> #<SB-C::SOURCE-INFO {10014E9533}> SB-C::INPUT-ERROR-IN-COMPILE-FILE)
21: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-C::SUB-COMPILE-FILE))
22: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
23: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-C::SUB-COMPILE-FILE) {19FF3DB}> #<SB-THREAD:MUTEX "World Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10005004F3}>> T NIL)
24: ((FLET "LAMBDA0" :IN "SYS:SRC;COMPILER;MAIN.LISP"))
25: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
26: (SB-C::SUB-COMPILE-FILE #<SB-C::SOURCE-INFO {10014E9533}> NIL)
27: (COMPILE-FILE "/tmp/example3.lisp" :OUTPUT-FILE NIL :VERBOSE NIL :PRINT NIL :EXTERNAL-FORMAT :DEFAULT :TRACE-FILE NIL :BLOCK-COMPILE NIL :EMIT-CFASL NIL)
28: (SB-INT:SIMPLE-EVAL-IN-LEXENV (COMPILE-FILE "/tmp/example3.lisp") #<NULL-LEXENV>)
29: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PROGN (PRINT *FEATURES*) (COMPILE-FILE "/tmp/example3.lisp")) #<NULL-LEXENV>)
30: (EVAL (PROGN (PRINT *FEATURES*) (COMPILE-FILE "/tmp/example3.lisp")))
31: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(progn (print *features*) (compile-file \"/tmp/example3.lisp\"))")))
32: (SB-IMPL::TOPLEVEL-INIT)
33: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
34: ((FLET "WITHOUT-INTERRUPTS-BODY-14" :IN SAVE-LISP-AND-DIE))
35: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

|#

Revision history for this message
Stas Boukarev (stassats) wrote :

7de8d2c017fcaf21750ab551b1d59a4c4c42d414

Changed in sbcl:
status: New → Fix Committed
Changed in sbcl:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.