X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-rotate-byte%2Fcompiler.lisp;h=a2282278426f445db19cc1bf8ca713eaaab22394;hb=a0a413499415738d23cc40baa44e9c404af54a94;hp=95dcf655fa39a1d8485944631b39852bbbdcf3ef;hpb=cec71f1e4e1ead387f2ea642f760e553b6053f2b;p=sbcl.git diff --git a/contrib/sb-rotate-byte/compiler.lisp b/contrib/sb-rotate-byte/compiler.lisp index 95dcf65..a228227 100644 --- a/contrib/sb-rotate-byte/compiler.lisp +++ b/contrib/sb-rotate-byte/compiler.lisp @@ -48,9 +48,11 @@ 'integer) (deftransform %rotate-byte ((count size pos integer) - ((or (integer -31 -1) (integer 1 31)) + ((integer -31 31) (constant-arg (member 32)) (constant-arg (member 0)) (unsigned-byte 32)) *) "inline 32-bit rotation" + ;; FIXME: What happens when, as here, the two type specifiers for + ;; COUNT overlap? Which gets to run first? '(%unsigned-32-rotate-byte count integer))