From: Juho Snellman Date: Thu, 8 Mar 2007 18:09:32 +0000 (+0000) Subject: 1.0.3.37: Oops, fix bad argument types in the new x86-64 modular arithmetic VOPs X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=bb2a6727268d4b7275efd7328169df9db34fe9d9;p=sbcl.git 1.0.3.37: Oops, fix bad argument types in the new x86-64 modular arithmetic VOPs --- diff --git a/src/compiler/x86-64/arith.lisp b/src/compiler/x86-64/arith.lisp index 37cc2a2..7ea7d06 100644 --- a/src/compiler/x86-64/arith.lisp +++ b/src/compiler/x86-64/arith.lisp @@ -1238,7 +1238,7 @@ (sc-is r signed-stack)) (location= x r))))) (:info y) - (:arg-types untagged-num (:constant (or (unsigned-byte 64) (signed-byte 64)))) + (:arg-types untagged-num (:constant (or (unsigned-byte 31) (signed-byte 32)))) (:results (r :scs (unsigned-reg signed-reg) :from (:argument 0) :load-if (not (and (or (sc-is x unsigned-stack) (sc-is x signed-stack)) diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index 7952ae1..9167b6b 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -2178,3 +2178,15 @@ ;;; ;;; Bug reported by Kaersten Poeck on sbcl-devel 20061023. (compile nil '(lambda () (let* () (declare (values list))))) + + +;;; test for some problems with too large immediates in x86-64 modular +;;; arithmetic vops +(compile nil '(lambda (x) (declare (fixnum x)) + (logand most-positive-fixnum (logxor x most-positive-fixnum)))) + +(compile nil '(lambda (x) (declare (fixnum x)) + (logand most-positive-fixnum (+ x most-positive-fixnum)))) + +(compile nil '(lambda (x) (declare (fixnum x)) + (logand most-positive-fixnum (* x most-positive-fixnum)))) diff --git a/version.lisp-expr b/version.lisp-expr index dca2735..d1da959 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.3.36" +"1.0.3.37"