X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Farray-tran.lisp;h=ab21afabe6e357034e3df6a1fb2deb16fcd89263;hb=94ea2b2082deaa0331dfb66fa6af6ca12dd8dc83;hp=6dae5357f9216a9a728fddd3213d855c145ccf2a;hpb=3c5609fe910bae51ff885c8cfd4be879151e7489;p=sbcl.git diff --git a/src/compiler/array-tran.lisp b/src/compiler/array-tran.lisp index 6dae535..ab21afa 100644 --- a/src/compiler/array-tran.lisp +++ b/src/compiler/array-tran.lisp @@ -293,8 +293,7 @@ (give-up-ir1-transform "cannot open-code creation of ~S" result-type-spec)) #-sb-xc-host - (unless (csubtypep (ctype-of (sb!vm:saetp-initial-element-default saetp)) - eltype-type) + (unless (ctypep (sb!vm:saetp-initial-element-default saetp) eltype-type) ;; This situation arises e.g. in (MAKE-ARRAY 4 :ELEMENT-TYPE ;; '(INTEGER 1 5)) ANSI's definition of MAKE-ARRAY says "If ;; INITIAL-ELEMENT is not supplied, the consequences of later @@ -523,7 +522,7 @@ ((:maybe) (give-up-ir1-transform "The array type is ambiguous; must call ~ - ARRAY-HAS-FILL-POINTER-P at runtime."))))))) + ARRAY-HAS-FILL-POINTER-P at runtime."))))))) ;;; Primitive used to verify indices into arrays. If we can tell at ;;; compile-time or we are generating unsafe code, don't bother with @@ -758,7 +757,7 @@ (bit-vector bit-vector &optional null) * :policy (>= speed space)) `(,',fun bit-array-1 bit-array-2 - (make-array (length bit-array-1) :element-type 'bit))) + (make-array (array-dimension bit-array-1 0) :element-type 'bit))) ;; If result is T, make it the first arg. (deftransform ,fun ((bit-array-1 bit-array-2 result-bit-array) (bit-vector bit-vector (eql t)) *) @@ -779,7 +778,7 @@ (bit-vector &optional null) * :policy (>= speed space)) '(bit-not bit-array-1 - (make-array (length bit-array-1) :element-type 'bit))) + (make-array (array-dimension bit-array-1 0) :element-type 'bit))) (deftransform bit-not ((bit-array-1 result-bit-array) (bit-vector (eql t))) '(bit-not bit-array-1 bit-array-1))