X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.pure.lisp;h=b9dacd9acb5f9327e0eda07cd006922c88dfdaa0;hb=b914788eab773b579664dcdc09a5278161191c47;hp=3bfaf656dc6844e19367732048be4403fd81bcba;hpb=f49bfb22b950ee41bdfd23de705fa023b3a9848c;p=sbcl.git diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index 3bfaf65..b9dacd9 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -1656,3 +1656,38 @@ (dotimes (i 100) (when (> (funcall fun t) 9) (error "bad RANDOM event")))) + +;;; 0.8.17.28-sma.1 lost derived type information. +(handler-bind ((sb-ext:compiler-note #'error)) + (compile nil + '(lambda (x y v) + (declare (optimize (speed 3) (safety 0))) + (declare (type (integer 0 80) x) + (type (integer 0 11) y) + (type (simple-array (unsigned-byte 32) (*)) v)) + (setf (aref v 0) (* (* x #.(floor (ash 1 32) (* 11 80))) y)) + nil))) + +;;; Bug reported by Robert J. Macomber: instrumenting of more-entry +;;; prevented open coding of %LISTIFY-REST-ARGS. +(let ((f (compile nil '(lambda () + (declare (optimize (debug 3))) + (with-simple-restart (blah "blah") (error "blah")))))) + (handler-bind ((error (lambda (c) (invoke-restart 'blah)))) + (assert (equal (multiple-value-list (funcall f)) '(nil t))))) + +;;; Bug reported by Timmy Douglas: overflow in bit vector setter with +;;; constant index and value. +(let* ((n (* 2 sb-vm::n-word-bits)) + (array1 (make-array n :element-type 'bit)) + (array2 (make-array n :element-type 'bit))) + (dotimes (i n) + (dotimes (v 2) + (let ((f (compile nil `(lambda (a) + (declare (type (simple-array bit (,n)) a)) + (setf (bit a ,i) ,v))))) + (fill array1 (- 1 v)) + (fill array2 (- 1 v)) + (funcall f array1) + (setf (aref array2 i) v) + (assert (equal array1 array2))))))