0.8alpha.0.8:
[sbcl.git] / src / compiler / knownfun.lisp
index 78433e0..86f4b85 100644 (file)
@@ -25,7 +25,7 @@
 ;;; breakdown of side effects, since we do very little code motion on
 ;;; IR1. We are interested in some deeper semantic properties such as
 ;;; whether it is safe to pass stack closures to.
-(def-boolean-attribute ir1
+(!def-boolean-attribute ir1
   ;; may call functions that are passed as arguments. In order to
   ;; determine what other effects are present, we must find the
   ;; effects of all arguments that may be functions.
   ;; may be eliminated if value is unused. The function has no side
   ;; effects except possibly cons. If a function might signal errors,
   ;; then it is not flushable even if it is movable, foldable or
-  ;; unsafely-flushable. Implies UNSAFELY-FLUSHABLE.
+  ;; unsafely-flushable. Implies UNSAFELY-FLUSHABLE. (In safe code
+  ;; type checking of arguments is always performed by the caller, so
+  ;; a function which SHOULD signal an error if arguments are not of
+  ;; declared types may be FLUSHABLE.)
   flushable
   ;; unsafe call may be eliminated if value is unused. The function
   ;; has no side effects except possibly cons and signalling an error
 (defun %defknown (names type attributes &key derive-type optimizer)
   (let ((ctype (specifier-type type))
        (info (make-fun-info :attributes attributes
-                                 :derive-type derive-type
-                                 :optimizer optimizer))
+                             :derive-type derive-type
+                             :optimizer optimizer))
        (target-env *info-environment*))
     (dolist (name names)
       (let ((old-fun-info (info :function :info name)))