X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fbit-vector.impure-cload.lisp;h=137d19d84a77e17ce7adf55e18679b724e9b6db1;hb=b5dc433da5b8bd3b36db88f7ec35cdb03cb64384;hp=640470bd8ce428a4c008a97a5a0a57ffefcbe485;hpb=0704fd3f3f027ec1be05ddb986b6ca538aa165ca;p=sbcl.git diff --git a/tests/bit-vector.impure-cload.lisp b/tests/bit-vector.impure-cload.lisp index 640470b..137d19d 100644 --- a/tests/bit-vector.impure-cload.lisp +++ b/tests/bit-vector.impure-cload.lisp @@ -39,7 +39,24 @@ (assert (= (aref a (- array-dimension-limit 2)) 1)) (bit-and a b a) (assert (= (aref a 0) 0)) - (assert (= (aref a (- array-dimension-limit 2)) 0)))) + (assert (= (aref a (- array-dimension-limit 2)) 0))) + ;; a special COUNT transform on bitvectors; triggers on (>= SPEED SPACE) + (locally + (declare (optimize (speed 3) (space 1))) + (let ((bv1 (make-array 5 :element-type 'bit)) + (bv2 (make-array 0 :element-type 'bit)) + (bv3 (make-array 68 :element-type 'bit))) + (declare (type simple-bit-vector bv1 bv2 bv3)) + (setf (sbit bv3 42) 1) + ;; bitvector smaller than the word size + (assert (= 0 (count 1 bv1))) + (assert (= 5 (count 0 bv1))) + ;; special case of 0-length bitvectors + (assert (= 0 (count 1 bv2))) + (assert (= 0 (count 0 bv2))) + ;; bitvector larger than the word size + (assert (= 1 (count 1 bv3))) + (assert (= 67 (count 0 bv3)))))) (bit-vector-test)