0.8.6.3
[sbcl.git] / tests / arith.pure.lisp
index 6e13aea..8c47082 100644 (file)
   (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))
             ((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))