From b870615b146940f661e5d0e9069ca4e16e9f483d Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Tue, 1 Apr 2003 14:14:09 +0000 Subject: [PATCH] 0.pre8.25: 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 | 2 +- src/compiler/generic/vm-tran.lisp | 26 ++++++++++++++++++-------- version.lisp-expr | 2 +- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/code/target-sxhash.lisp b/src/code/target-sxhash.lisp index 0c4f16f..3df7c3d 100644 --- a/src/code/target-sxhash.lisp +++ b/src/code/target-sxhash.lisp @@ -314,7 +314,7 @@ (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 diff --git a/src/compiler/generic/vm-tran.lisp b/src/compiler/generic/vm-tran.lisp index 92dac91..7c4cc00 100644 --- a/src/compiler/generic/vm-tran.lisp +++ b/src/compiler/generic/vm-tran.lisp @@ -121,19 +121,29 @@ (*)) 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) ;;; diff --git a/version.lisp-expr b/version.lisp-expr index 015f49a..49dc1f0 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4