X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Farray-tran.lisp;h=fa3e7aa6991ac4d01704344b867b46567914749f;hb=c7de1989d006e0b3a4f26143b7a81c9bdb754101;hp=b6b7c512bbd24d836fc8e5a1a0f6dd05496aa488;hpb=403bacffd903f8c5787a182f4133cffc69b55dc0;p=sbcl.git diff --git a/src/compiler/array-tran.lisp b/src/compiler/array-tran.lisp index b6b7c51..fa3e7aa 100644 --- a/src/compiler/array-tran.lisp +++ b/src/compiler/array-tran.lisp @@ -91,11 +91,6 @@ (defoptimizer (aref derive-type) ((array &rest indices) node) (assert-array-rank array (length indices)) - ;; If the node continuation has a single use then assert its type. - (let ((cont (node-cont node))) - (when (= (length (find-uses cont)) 1) - (assert-continuation-type cont (extract-upgraded-element-type array) - (lexenv-policy (node-lexenv node))))) (extract-upgraded-element-type array)) (defoptimizer (%aset derive-type) ((array &rest stuff)) @@ -736,7 +731,7 @@ (make-array (length bit-array-1) :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 (member t)) *) + (bit-vector bit-vector (eql t)) *) `(,',fun bit-array-1 bit-array-2 bit-array-1))))) (def bit-and) (def bit-ior) @@ -756,11 +751,8 @@ '(bit-not bit-array-1 (make-array (length bit-array-1) :element-type 'bit))) (deftransform bit-not ((bit-array-1 result-bit-array) - (bit-vector (constant-arg t))) + (bit-vector (eql t))) '(bit-not bit-array-1 bit-array-1)) -;;; FIXME: What does (CONSTANT-ARG T) mean? Is it the same thing -;;; as (CONSTANT-ARG (MEMBER T)), or does it mean any constant -;;; value? ;;; Pick off some constant cases. (defoptimizer (array-header-p derive-type) ((array))