From: Juho Snellman Date: Sat, 15 Oct 2005 14:02:34 +0000 (+0000) Subject: 0.9.5.66: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=253daeec9c0ac81c2239e9148ee806e7ad647f7e;p=sbcl.git 0.9.5.66: Fix the umpteenth sign-extension problem on x86-64 (invalid types for SIGN-EXTEND VOP). --- diff --git a/src/compiler/x86-64/c-call.lisp b/src/compiler/x86-64/c-call.lisp index 1ab967a..a45217f 100644 --- a/src/compiler/x86-64/c-call.lisp +++ b/src/compiler/x86-64/c-call.lisp @@ -190,15 +190,16 @@ ;;; The ABI specifies that signed short/int's are returned as 32-bit ;;; values. Negative values need to be sign-extended to 64-bits (done ;;; in a :NATURALIZE-GEN alien-type-method). -(defknown sign-extend (fixnum) fixnum (foldable flushable movable)) +(defknown sign-extend ((signed-byte 64)) (signed-byte 64) + (foldable flushable movable)) (define-vop (sign-extend) (:translate sign-extend) (:policy :fast-safe) - (:args (val :scs (any-reg))) - (:arg-types fixnum) - (:results (res :scs (any-reg))) - (:result-types fixnum) + (:args (val :scs (signed-reg))) + (:arg-types signed-byte-64) + (:results (res :scs (signed-reg))) + (:result-types signed-byte-64) (:generator 1 (inst movsxd res (make-random-tn :kind :normal diff --git a/tests/callback.impure.lisp b/tests/callback.impure.lisp index 45fb31d..623a62a 100644 --- a/tests/callback.impure.lisp +++ b/tests/callback.impure.lisp @@ -134,7 +134,7 @@ ;;; tests for a sign extension problem in callback argument handling on x86-64 -(with-test (:name sign-extension :fails-on :x86-64) +(with-test (:name sign-extension) (let ((*add-two-ints* (sb-alien::alien-callback (function int int int) #'+))) (assert (= (alien-funcall *add-two-ints* #x-80000000 1) diff --git a/version.lisp-expr b/version.lisp-expr index 4a9ae38..44d0379 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".) -"0.9.5.65" +"0.9.5.66"