Compilation of 7 line function does not terminate
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Medium
|
Unassigned |
Bug Description
(compile nil '(lambda (a c x)
(declare (type (integer -2845880 670871950) a))
(declare (type (integer -8797424583931 -3696228396) c))
(declare (type (integer 0 1) x))
(flet ((%f16 (f16-1)
(max f16-1 -982044058 a -1354524299132 f16-1 2
))
(logior (%f16
(expt
(+ (- (deposit-field c (byte 26 19) -6987))
x)
2))
49))))
==> does not terminate before I ran out of patience
This is cut down from a larger function produced by the random tester. On that function, the lisp eventually (over the weekend when I was running the tester) ran out of heap and dropped into ldb.
I wonder if the compiler is producing very large type terms somewhere.
Changed in sbcl: | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in sbcl: | |
status: | Triaged → Fix Released |
Simplified example:
(compile nil
'(lambda (c x)
(declare (type fixnum c))
(declare (type (integer 0 1) x))
(flet ((%f16 (y) (max y y c)))
(-
(%f16
(expt
(+ (- (deposit-field c (byte 26 19) -1))
(%f16 x))
2))
))))