diff --git a/ansi-tests/logbitp.lsp b/ansi-tests/logbitp.lsp
index fe6a973ad764fa626f0672b7a481c39171eac39a..85abdce21b458f7d7f8bcd443528603f3a3b7ee2 100644
--- a/ansi-tests/logbitp.lsp
+++ b/ansi-tests/logbitp.lsp
@@ -61,6 +61,22 @@
   (notnot-mv (logbitp (1+ most-positive-fixnum) -1))
   t)
 
+(deftest logbitp.7
+  (loop for len = (random 100)
+	for i = (random-from-interval (ash 1 len))
+	for k = (random (1+ len))
+	repeat 1000
+	unless (if (ldb-test (byte 1 k) i)
+		   (logbitp k i)
+		 (not (logbitp k i)))
+	collect (list i k))
+  nil)
+
+(deftest logbitp.8
+  (loop for k from 1 to 1000
+	always (logbitp k -1))
+  t)
+
 (deftest logbitp.order.1
   (let ((i 0) a b)
     (values
diff --git a/ansi-tests/numbers-aux.lsp b/ansi-tests/numbers-aux.lsp
index 182ddd3d5ddeeeb95a1fd8472c80b6387add96ed..ead2e2bf688989c503a04c594a15bd1e1b6d8e23 100644
--- a/ansi-tests/numbers-aux.lsp
+++ b/ansi-tests/numbers-aux.lsp
@@ -249,3 +249,35 @@
 ;;; Approximate equality function
 (defun approx= (x y &optional (eps (epsilon x)))
   (<= (abs (/ (- x y) (max (abs x) 1))) eps))
+
+(defun test-log-op-with-decls (op xlo xhi ylo yhi niters
+				  &optional
+				  (decls '((optimize (speed 3) (safety 1)
+						     (debug 1)))))
+  "Test that a compiled form of the LOG* function OP computes
+   the expected result on two random integers drawn from the
+   types `(integer ,xlo ,xhi) and `(integer ,ylo ,yhi).  Try
+   niters choices.  Return a list of pairs on which the test fails."
+
+  (assert (symbolp op))
+  (assert (integerp xlo))
+  (assert (integerp xhi))
+  (assert (integerp ylo))
+  (assert (integerp yhi))
+  (assert (integerp niters))
+  (assert (<= xlo xhi))
+  (assert (<= ylo yhi))
+
+  (let* ((source
+	  `(lambda (x y)
+	     (declare (type (integer ,xlo ,xhi) x)
+		      (type (integer ,ylo ,yhi) y)
+		      ,@ decls)
+	     (,op x y)))
+	 (fn (compile nil source)))
+    (loop for i below niters
+	  for x = (random-from-interval xhi xlo)
+	  for y = (random-from-interval yhi ylo)
+	  unless (eql (funcall (the symbol op) x y)
+		      (funcall fn x y))
+	  collect (list x y))))