X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fseqtran.lisp;h=ed8cae706b9093cd5664f50bcbcb29a20fe07a75;hb=3a2c2a2217f77e0d1a44a581c83e0311ebc2594a;hp=5c1874dcc594d21f0be329b13af43fc47d2eba33;hpb=380ea897e2c12a01547f918f73e8a1db0a3a0373;p=sbcl.git diff --git a/src/compiler/seqtran.lisp b/src/compiler/seqtran.lisp index 5c1874d..ed8cae7 100644 --- a/src/compiler/seqtran.lisp +++ b/src/compiler/seqtran.lisp @@ -349,7 +349,7 @@ (if (null splice) (setq list (cdr x)) (rplacd splice (cdr x)))) - (T (setq splice x))))) + (t (setq splice x))))) (deftransform fill ((seq item &key (start 0) (end (length seq))) (vector t &key (:start t) (:end index)) @@ -683,6 +683,10 @@ (defun valid-bit-bash-saetp-p (saetp) ;; BIT-BASHing isn't allowed on simple vectors that contain pointers (and (not (eq t (sb!vm:saetp-specifier saetp))) + ;; Disallowing (VECTOR NIL) also means that we won't transform + ;; sequence functions into bit-bashing code and we let the + ;; generic sequence functions signal errors if necessary. + (not (zerop (sb!vm:saetp-n-bits saetp))) ;; Due to limitations with the current BIT-BASHing code, we can't ;; BIT-BASH reliably on arrays whose element types are larger ;; than the word size.