From: Christophe Rhodes Date: Fri, 12 Sep 2003 11:27:39 +0000 (+0000) Subject: 0.8.3.55: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=eb6f8dd033501c7372b27967a2cb7750560897bd;p=sbcl.git 0.8.3.55: Tweak the %DPB fix: ... on Alpha, currently N-WORD-BITS = 32 while register arithmetic is 64-bits. Extend and document the cutoff in %DEPOSIT-FIELD DERIVE-TYPE. --- diff --git a/src/compiler/srctran.lisp b/src/compiler/srctran.lisp index e2cb897..518d88b 100644 --- a/src/compiler/srctran.lisp +++ b/src/compiler/srctran.lisp @@ -2358,7 +2358,17 @@ (high (numeric-type-high int)) (low (numeric-type-low int))) (when (and size-high posn-high high low - (<= (+ size-high posn-high) sb!vm:n-word-bits)) + ;; KLUDGE: we need this cutoff here, otherwise we + ;; will merrily derive the type of %DPB as + ;; (UNSIGNED-BYTE 1073741822), and then attempt to + ;; canonicalize this type to (INTEGER 0 (1- (ASH 1 + ;; 1073741822))), with hilarious consequences. We + ;; cutoff at 4*SB!VM:N-WORD-BITS to allow inference + ;; over a reasonable amount of shifting, even on + ;; the alpha/32 port, where N-WORD-BITS is 32 but + ;; machine integers are 64-bits. -- CSR, + ;; 2003-09-12 + (<= (+ size-high posn-high) (* 4 sb!vm:n-word-bits))) (let ((raw-bit-count (max (integer-length high) (integer-length low) (+ size-high posn-high)))) diff --git a/version.lisp-expr b/version.lisp-expr index 54ac710..9476597 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.8.3.54" +"0.8.3.55"