kmrcl fails to build on SBCL 2.2.5
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
It builds fine on 2.2.4.
I'm trying to load kmrcl commit 4a27407aad9deb6
Looks like a problem with declaiming the type of fixnum / integer constants:
```
[...]
; compiling file "/gnu/store/
; file: /gnu/store/
; in: DEFUN USB8-ARRAY-
; (- KMRCL::END KMRCL::START)
;
; note: unable to
; open-code float conversion in mixed numeric operation
; due to type uncertainty:
; The first argument is a NUMBER, not a FLOAT.
;
; note: unable to
; open-code float conversion in mixed numeric operation
; due to type uncertainty:
; The first argument is a NUMBER, not a (OR (COMPLEX SINGLE-FLOAT)
; (COMPLEX DOUBLE-FLOAT)).
;
; note: forced to do GENERIC-- (cost 10)
; unable to do inline fixnum arithmetic (cost 2) because:
; The first argument is a NUMBER, not a FIXNUM.
; unable to do inline (unsigned-byte 64) arithmetic (cost 4) because:
; The first argument is a NUMBER, not a (UNSIGNED-BYTE 64).
; The second argument is a FIXNUM, not a (UNSIGNED-BYTE 64).
; etc.
; in: DEF-PREFIXED-
; (KMRCL:
; "Outputs a string of LEN digit with an optional initial character PCHAR.
; Leading zeros are present. LEN must be an integer.")
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA FUNCTION BLOCK
; --> DO* BLOCK LET* MOD
; ==>
; 1
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a INTEGER, not a (SIGNED-BYTE 64).
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a INTEGER, not a (UNSIGNED-BYTE 64).
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA FUNCTION BLOCK
; --> DO* BLOCK LET* TAGBODY SETQ SETQ THE NTH-VALUE MULTIPLE-VALUE-BIND LET
; --> FLOOR
; ==>
; 1
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a (OR (INTEGER * -1) (INTEGER 1)), not a (SIGNED-BYTE
; 64).
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a (OR (INTEGER * -1) (INTEGER 1)), not a (UNSIGNED-BYTE
; 64).
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA FUNCTION BLOCK
; --> DO* BLOCK LET* TAGBODY SETQ SETQ THE MOD
; ==>
; 1
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a INTEGER, not a (SIGNED-BYTE 64).
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a INTEGER, not a (UNSIGNED-BYTE 64).
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA FUNCTION BLOCK
; --> DO* BLOCK LET* MINUSP
; ==>
; 1
;
; note: forced to do <-INTEGER-FIXNUM (cost 8)
; unable to do inline fixnum comparison (cost 3) because:
; The first argument is a INTEGER, not a FIXNUM.
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA FUNCTION BLOCK
; --> DO* BLOCK LET* IF -
; ==>
; 1
;
; note: forced to do GENERIC-NEGATE (cost 10)
; unable to do inline fixnum arithmetic (cost 1) because:
; The first argument is a INTEGER, not a FIXNUM.
; The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES FIXNUM &REST T).
; unable to do inline (signed-byte 64) arithmetic (cost 2) because:
; The first argument is a INTEGER, not a (SIGNED-BYTE 64).
; The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES
; (SIGNED-BYTE 64) &REST
; T).
; etc.
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA FUNCTION BLOCK
; --> DO* BLOCK LET* TAGBODY SETQ SETQ THE NTH-VALUE MULTIPLE-VALUE-BIND LET
; --> FLOOR
; ==>
; 1
;
; note: forced to do GENERIC-- (cost 10)
; unable to do inline fixnum arithmetic (cost 1) because:
; The first argument is a INTEGER, not a FIXNUM.
; The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES FIXNUM &REST T).
; unable to do inline fixnum arithmetic (cost 2) because:
; The first argument is a INTEGER, not a FIXNUM.
; The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES FIXNUM &REST T).
; etc.
; in: DEFUN INTEGER-STRING
; (MOD KMRCL::VAL 10)
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a INTEGER, not a (SIGNED-BYTE 64).
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a INTEGER, not a (UNSIGNED-BYTE 64).
; (FLOOR KMRCL::VAL 10)
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a (OR (INTEGER * -1) (INTEGER 1)), not a (SIGNED-BYTE
; 64).
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a (OR (INTEGER * -1) (INTEGER 1)), not a (UNSIGNED-BYTE
; 64).
; (MOD KMRCL::VAL 10)
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a INTEGER, not a (SIGNED-BYTE 64).
;
; note: unable to
; convert integer division to multiplication
; due to type uncertainty:
; The first argument is a INTEGER, not a (UNSIGNED-BYTE 64).
; (MINUSP KMRCL::NUM)
;
; note: forced to do <-INTEGER-FIXNUM (cost 8)
; unable to do inline fixnum comparison (cost 3) because:
; The first argument is a INTEGER, not a FIXNUM.
; (- 0 KMRCL::NUM)
;
; note: forced to do GENERIC-NEGATE (cost 10)
; unable to do inline fixnum arithmetic (cost 1) because:
; The first argument is a INTEGER, not a FIXNUM.
; The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES FIXNUM &REST T).
; unable to do inline (signed-byte 64) arithmetic (cost 2) because:
; The first argument is a INTEGER, not a (SIGNED-BYTE 64).
; The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES
; (SIGNED-BYTE 64) &REST
; T).
; etc.
; (FLOOR KMRCL::VAL 10)
;
; note: forced to do GENERIC-- (cost 10)
; unable to do inline fixnum arithmetic (cost 1) because:
; The first argument is a INTEGER, not a FIXNUM.
; The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES FIXNUM &REST T).
; unable to do inline fixnum arithmetic (cost 2) because:
; The first argument is a INTEGER, not a FIXNUM.
; The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES FIXNUM &REST T).
; etc.
; in: DEFUN COUNT-STRING-
; (FUNCALL KMRCL::PRED (SCHAR KMRCL::S KMRCL::I))
;
; note: unable to
; optimize away possible call to FDEFINITION at runtime
; because:
; PRED is not known to be a function
Unhandled SB-KERNEL:
#<SB-
:VALUE 48 {1007B44AE3}> fell through ETYPECASE expression.
Wanted one of (NULL SB-C::GLOBAL-VAR).
Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {100B688073}>
0: (SB-C::
1: (SB-C::%PROCLAIM (TYPE FIXNUM +CHAR-CODE-0+ +CHAR-CODE-UPPER-A+ +CHAR-CODE-0) #S(SB-C:
2: (SB-INT:
3: (SB-INT:
4: (SB-EXT:EVAL-TLF (PROGN (SB-C::%PROCLAIM (QUOTE (TYPE FIXNUM +CHAR-CODE-0+ +CHAR-CODE-UPPER-A+ +CHAR-CODE-0)) (SB-C:SOURCE-
5: ((FLET SB-C::FROB :IN SB-C::EVAL-
6: (SB-C::
7: (SB-C::
8: (SB-C::
9: (SB-C::
10: (SB-C::
11: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-C::SUB-
12: (SB-C::
13: ((FLET "LAMBDA0" :IN "SYS:SRC;
14: ((FLET SB-C::WITH-IT :IN SB-C::%
15: (SB-C::
16: (COMPILE-FILE #P"/gnu/
17: (UIOP/UTILITY:
18: (UIOP/PATHNAME:
19: (UIOP/LISP-
20: (ASDF/LISP-
21: ((SB-PCL::EMF ASDF/ACTION:
22: ((LAMBDA NIL :IN ASDF/ACTION:
23: ((:METHOD ASDF/ACTION:
24: ((:METHOD ASDF/PLAN:
25: ((FLET SB-C::WITH-IT :IN SB-C::%
26: ((:METHOD ASDF/PLAN:
27: ((:METHOD ASDF/OPERATE:
28: ((SB-PCL::EMF ASDF/OPERATE:
29: ((LAMBDA NIL :IN ASDF/OPERATE:
30: ((:METHOD ASDF/OPERATE:
31: ((SB-PCL::EMF ASDF/OPERATE:
32: ((LAMBDA NIL :IN ASDF/OPERATE:
33: ((:METHOD ASDF/OPERATE:
34: (ASDF/SESSION:
35: ((LAMBDA NIL :IN ASDF/OPERATE:
36: (ASDF/SESSION:
37: ((:METHOD ASDF/OPERATE:
38: (ASDF/OPERATE:
39: (SB-INT:
40: (EVAL (ASDF/OPERATE:
41: (SB-IMPL:
42: (SB-IMPL:
43: ((FLET SB-UNIX::BODY :IN SB-IMPL:
44: ((FLET "WITHOUT-
45: (SB-IMPL:
```
Changed in sbcl: | |
status: | New → Incomplete |
status: | Incomplete → Fix Committed |
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
Out of curiosity, what was the culprit? Which commit fixes it?