From c45da820b56cd0bd4bd958b66639fa021054f962 Mon Sep 17 00:00:00 2001 From: Juho Snellman Date: Tue, 21 Aug 2007 05:12:33 +0000 Subject: [PATCH] 1.0.8.43: Fix GCD on most-negative-fixnum on x86-64 * Bogus type declarations. * Reported by Gregory Vanuxem on sbcl-devel. --- package-data-list.lisp-expr | 1 + src/code/numbers.lisp | 8 ++++---- src/compiler/generic/vm-type.lisp | 2 ++ version.lisp-expr | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/package-data-list.lisp-expr b/package-data-list.lisp-expr index 0dbc4d0..bebbbf1 100644 --- a/package-data-list.lisp-expr +++ b/package-data-list.lisp-expr @@ -2356,6 +2356,7 @@ structure representations" "SAP-POINTER-SLOT" "SAP-REG-SC-NUMBER" "SAP-SIZE" "SAP-STACK-SC-NUMBER" "SAP-WIDETAG" "SIGFPE-HANDLER" "SIGNED-REG-SC-NUMBER" "SIGNED-STACK-SC-NUMBER" + "SIGNED-WORD" "SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT-WIDETAG" #!+long-float "SIMPLE-ARRAY-COMPLEX-LONG-FLOAT-WIDETAG" "SIMPLE-ARRAY-COMPLEX-SINGLE-FLOAT-WIDETAG" diff --git a/src/code/numbers.lisp b/src/code/numbers.lisp index fe0ff5c..3f02be2 100644 --- a/src/code/numbers.lisp +++ b/src/code/numbers.lisp @@ -1360,7 +1360,7 @@ the first." (number-dispatch ((u integer) (v integer)) ((fixnum fixnum) (locally - (declare (optimize (speed 3) (safety 0))) + (declare (optimize (speed 3) (safety 0))) (do ((k 0 (1+ k)) (u (abs u) (ash u -1)) (v (abs v) (ash v -1))) @@ -1376,11 +1376,11 @@ the first." (setq temp (- u v)) (when (zerop temp) (let ((res (ash u k))) - (declare (type (signed-byte 31) res) + (declare (type sb!vm:signed-word res) (optimize (inhibit-warnings 3))) (return res)))))) - (declare (type (mod 30) k) - (type (signed-byte 31) u v))))) + (declare (type (mod #.sb!vm:n-word-bits) k) + (type sb!vm:signed-word u v))))) ((bignum bignum) (bignum-gcd u v)) ((bignum fixnum) diff --git a/src/compiler/generic/vm-type.lisp b/src/compiler/generic/vm-type.lisp index c214fe8..4f7c4a7 100644 --- a/src/compiler/generic/vm-type.lisp +++ b/src/compiler/generic/vm-type.lisp @@ -17,6 +17,8 @@ ;;;; FIXME: I'm not sure where to put this. -- WHN 19990817 (def!type sb!vm:word () `(unsigned-byte ,sb!vm:n-word-bits)) +(def!type sb!vm:signed-word () `(signed-byte ,sb!vm:n-word-bits)) + ;;;; implementation-dependent DEFTYPEs diff --git a/version.lisp-expr b/version.lisp-expr index 8c6c05d..f774a42 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.8.42" +"1.0.8.43" -- 1.7.10.4