X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Farray-tran.lisp;h=387f53f04a6777a36917c742005849143da1f69b;hb=cfc3b695e6452907fef6492710777511ac4af979;hp=c7481e2d41d862b5b0acd3519e642973ad5a1001;hpb=1c15a39341688bbca470c9187717d6370316b5c0;p=sbcl.git diff --git a/src/compiler/array-tran.lisp b/src/compiler/array-tran.lisp index c7481e2..387f53f 100644 --- a/src/compiler/array-tran.lisp +++ b/src/compiler/array-tran.lisp @@ -343,11 +343,14 @@ (not (eql default-initial-element (lvar-value initial-element))))) (let ((parameters (eliminate-keyword-args call 1 '((:element-type element-type) - (:initial-element initial-element))))) + (:initial-element initial-element)))) + (init (if (constant-lvar-p initial-element) + (lvar-value initial-element) + 'initial-element))) `(lambda (length ,@parameters) (declare (ignorable ,@parameters)) (truly-the ,result-spec - (fill ,alloc-form (the ,elt-spec initial-element)))))) + (fill ,alloc-form (the ,elt-spec ,init)))))) ;; just :ELEMENT-TYPE, or maybe with :INITIAL-ELEMENT EQL to the ;; default (t