0.6.9.21:
[sbcl.git] / src / compiler / ltn.lisp
index 9a2570a..e102f64 100644 (file)
       (when (and rejected
                 (policy call (> speed inhibit-warnings)))
        (note-rejected-templates call ltn-policy template))
-      ;; If we are forced to do a full call, we check to see whether the
-      ;; function called is the same as the current function. If so, we
-      ;; give a warning, as this is probably a botched interpreter stub.
+      ;; If we are forced to do a full call, we check to see whether
+      ;; the function called is the same as the current function. If
+      ;; so, we give a warning, as this is probably a botched attempt
+      ;; to implement an out-of-line version in terms of inline
+      ;; transforms or VOPs or whatever.
       (unless template
        (when (and (eq (continuation-function-name (combination-fun call))
                       (leaf-name
                              (ir1-attributep (function-info-attributes info)
                                              recursive)))))
          (let ((*compiler-error-context* call))
-           (compiler-warning "recursive known function definition")))
+           (compiler-warning "recursion in known function definition~2I ~
+                               ~_arg types=~S"
+                             (mapcar (lambda (arg)
+                                       (type-specifier (continuation-type
+                                                        arg)))
+                                     args))))
        (ltn-default-call call ltn-policy)
        (return-from ltn-analyze-known-call (values)))
       (setf (basic-combination-info call) template)