;; in the safe code. If a function MUST signal errors, then it is
;; not unsafely-flushable even if it is movable or foldable.
unsafely-flushable
+ ;; return value is important, and ignoring it is probably a mistake.
+ ;; Unlike the other attributes, this is used only for style
+ ;; warnings and has no effect on optimization.
+ important-result
;; may be moved with impunity. Has no side effects except possibly
;; consing, and is affected only by its arguments.
;;
;; The function does explicit argument type checking, so the
;; declared type should not be asserted when a definition is
;; compiled.
- explicit-check)
+ explicit-check
+ ;; The function should always be translated by a VOP (i.e. it should
+ ;; should never be converted into a full call). This is used strictly
+ ;; as a consistency checking mechanism inside the compiler during IR2
+ ;; transformation.
+ always-translatable)
(defstruct (fun-info #-sb-xc-host (:pure t))
;; boolean attributes of this function.
(eq (transform-important x) important)))
(fun-info-transforms info))))
(cond (old
- (style-warn "Overwriting ~S" old)
+ (style-warn 'sb!kernel:redefinition-with-deftransform
+ :transform old)
(setf (transform-function old) fun
(transform-note old) note))
(t