Index: /trunk/ccl/compiler/optimizers.lisp
===================================================================
--- /trunk/ccl/compiler/optimizers.lisp	(revision 304)
+++ /trunk/ccl/compiler/optimizers.lisp	(revision 305)
@@ -453,5 +453,5 @@
 
 (define-compiler-macro dpb (&whole call &environment env value byte integer)
-  (cond ((integerp byte)
+  (cond ((and (integerp byte) (> byte 0))
          (if (integerp value)
            `(logior ,(dpb value byte 0) (logand ,(lognot byte) ,integer))
@@ -496,5 +496,5 @@
 
 (define-compiler-macro ldb (&whole call &environment env byte integer)
-   (cond ((integerp byte)
+   (cond ((and (integerp byte) (> byte 0))
           (let ((size (byte-size byte))
                 (position (byte-position byte)))
@@ -1210,7 +1210,4 @@
 (defsynonym rest cdr)
 
-(defsynonym byte-size logcount)
-(defsynonym ldb-test logtest)
-(defsynonym mask-field logand)
 
 (defsynonym functionp lfunp)
@@ -1544,5 +1541,11 @@
   `(eq ppc32::subtag-lock (typecode ,lock)))
 
-
+(define-compiler-macro integerp (thing)
+  (let* ((typecode (gensym)))
+    `(let* ((,typecode (typecode ,thing)))
+      (declare (fixnum ,typecode))
+      (or (= ,typecode ppc32::tag-fixnum)
+          (= ,typecode ppc32::subtag-bignum)))))
+       
 
 
