0.pre8.25:
authorChristophe Rhodes <csr21@cam.ac.uk>
Tue, 1 Apr 2003 14:14:09 +0000 (14:14 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Tue, 1 Apr 2003 14:14:09 +0000 (14:14 +0000)
Quieten the cross-compiler (and incidentally the target) some
more:
... in DEFTRANSFORM %DATA-VECTOR-AND-INDEX, name the variables
%ARRAY and %INDEX to avoid naming collisions that prompt
spurious code deletion notes
... in NUMBER-PSXHASH, don't do SHORT-FLOAT case, and LONG-FLOAT
only for #!+LONG-FLOAT

src/code/target-sxhash.lisp
src/compiler/generic/vm-tran.lisp
version.lisp-expr

index 0c4f16f..3df7c3d 100644 (file)
               (etypecase key
                 (single-float (frob single-float))
                 (double-float (frob double-float))
-                (short-float (frob short-float))
+                #!+long-float
                 (long-float (error "LONG-FLOAT not currently supported")))))
       (rational (if (and (<= most-negative-double-float
                             key
index 92dac91..7c4cc00 100644 (file)
                               (*))
                 index)))))
 
-(deftransform %data-vector-and-index ((array index)
-                                     (simple-array t)
-                                     *
-                                     :important t)
+(deftransform %data-vector-and-index ((%array %index)
+                                     (simple-array t)
+                                     *
+                                     :important t)
+  ;; KLUDGE: why the percent signs?  Well, ARRAY and INDEX are
+  ;; respectively exported from the CL and SB!INT packages, which
+  ;; means that they're visible to all sorts of things.  If the
+  ;; compiler can prove that the call to ARRAY-HEADER-P, below, either
+  ;; returns T or NIL, it will delete the irrelevant branch.  However,
+  ;; user code might have got here with a variable named CL:ARRAY, and
+  ;; quite often compiler code with a variable named SB!INT:INDEX, so
+  ;; this can generate code deletion notes for innocuous user code:
+  ;; (DEFUN F (ARRAY I) (DECLARE (SIMPLE-VECTOR ARRAY)) (AREF ARRAY I))
+  ;; -- CSR, 2003-04-01
 
   ;; We do this solely for the -OR-GIVE-UP side effect, since we want
   ;; to know that the type can be figured out in the end before we
   ;; proceed, but we don't care yet what the type will turn out to be.
-  (upgraded-element-type-specifier-or-give-up array)
+  (upgraded-element-type-specifier-or-give-up %array)
 
-  '(if (array-header-p array)
-       (values (%array-data-vector array) index)
-       (values array index)))
+  '(if (array-header-p %array)
+       (values (%array-data-vector %array) %index)
+       (values %array %index)))
 
 ;;; transforms for getting at simple arrays of (UNSIGNED-BYTE N) when (< N 8)
 ;;;
index 015f49a..49dc1f0 100644 (file)
@@ -18,4 +18,4 @@
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.pre8.24"
+"0.pre8.25"