:specialized-element-type (array-type-specialized-element-type type))
;; Simple arrays cannot change at all.
type))
+ ((union-type-p type)
+ ;; Conservative union type is an union of conservative types.
+ (let ((res *empty-type*))
+ (dolist (part (union-type-types type) res)
+ (setf res (type-union res (conservative-type part))))))
(t
+ ;; Catch-all.
+ ;;
;; If the type contains some CONS types, the conservative type contains all
;; of them.
(when (types-equal-or-intersect type (specifier-type 'cons))
;; The VM mostly knows how to handle this. We need
;; to massage the call slightly, though.
(transform-call node transform (combination-fun-source-name node)))
- (:default
+ ((:default :maybe)
;; Let transforms have a crack at it.
(dolist (x (fun-info-transforms info))
#!+sb-show
(flush-lvar-externally-checkable-type arg))
(setf (combination-args use) nil)
(flush-dest list)
+ (flush-combination use)
(setf (combination-args node) args))
t)))