0.8.3.55:
authorChristophe Rhodes <csr21@cam.ac.uk>
Fri, 12 Sep 2003 11:27:39 +0000 (11:27 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Fri, 12 Sep 2003 11:27:39 +0000 (11:27 +0000)
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.

src/compiler/srctran.lisp
version.lisp-expr

index e2cb897..518d88b 100644 (file)
             (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))))
index 54ac710..9476597 100644 (file)
@@ -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"