X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fsrctran.lisp;h=fa72708fb02b43e573464519646d7b9fd8035b00;hb=3fc4b561752c5ad4519b882a3b9bdfe7a8207532;hp=e4e146b4d8156473b16bd67b3c5bbafc5b29017a;hpb=b34a3535ed7950a17e5dfe940285dcc10a814cb6;p=sbcl.git diff --git a/src/compiler/srctran.lisp b/src/compiler/srctran.lisp index e4e146b..fa72708 100644 --- a/src/compiler/srctran.lisp +++ b/src/compiler/srctran.lisp @@ -188,7 +188,12 @@ #-sb-xc-host ; (See CROSS-FLOAT-INFINITY-KLUDGE.) (deffrob ceiling)) -(define-source-transform logtest (x y) `(not (zerop (logand ,x ,y)))) +;;; This used to be a source transform (hence the lack of restrictions +;;; on the argument types), but we make it a regular transform so that +;;; the VM has a chance to see the bare LOGTEST and potentiall choose +;;; to implement it differently. --njf, 06-02-2006 +(deftransform logtest ((x y) * *) + `(not (zerop (logand x y)))) (deftransform logbitp ((index integer) (unsigned-byte (or (signed-byte #.sb!vm:n-word-bits)