projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.7.15:
[sbcl.git]
/
tests
/
arith.pure.lisp
diff --git
a/tests/arith.pure.lisp
b/tests/arith.pure.lisp
index
6e13aea
..
8c47082
100644
(file)
--- a/
tests/arith.pure.lisp
+++ b/
tests/arith.pure.lisp
@@
-106,7
+106,10
@@
(let* ((x (random most-positive-fixnum))
(x2 (* x 2))
(x3 (* x 3)))
(let* ((x (random most-positive-fixnum))
(x2 (* x 2))
(x3 (* x 3)))
- (let ((fn (handler-bind ((sb-ext:compiler-note #'error))
+ (let ((fn (handler-bind ((sb-ext:compiler-note
+ (lambda (c)
+ (when (<= x3 most-positive-fixnum)
+ (error c)))))
(compile nil
`(lambda (y)
(declare (optimize speed) (type (integer 0 3) y))
(compile nil
`(lambda (y)
(declare (optimize speed) (type (integer 0 3) y))
@@
-199,3
+202,7
@@
((89 125 16) (ASH A (MIN 18 -706)))
(T (DPB -3 (BYTE 30 30) -1)))))))
(assert (= (funcall fn 1227072 -529823 -18 -792831) -2147483649)))
((89 125 16) (ASH A (MIN 18 -706)))
(T (DPB -3 (BYTE 30 30) -1)))))))
(assert (= (funcall fn 1227072 -529823 -18 -792831) -2147483649)))
+
+;;; ASH of a negative bignum by a bignum count would erroneously
+;;; return 0 prior to sbcl-0.8.4.4
+(assert (= (ash (1- most-negative-fixnum) (1- most-negative-fixnum)) -1))