0.8aplha.0.12:
authorAlexey Dejneka <adejneka@comail.ru>
Mon, 5 May 2003 06:31:53 +0000 (06:31 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Mon, 5 May 2003 06:31:53 +0000 (06:31 +0000)
        Don't emit a note about inefficient return convention for a
        function, which does not return at all.

src/compiler/gtn.lisp
src/compiler/ir1util.lisp
version.lisp-expr

index 0aa7f2b..4a3352f 100644 (file)
   (multiple-value-bind (types count) (values-types (tail-set-type tails))
     (let ((ptypes (mapcar #'primitive-type types))
          (use-standard (use-standard-returns tails)))
-      (when (and (eq count :unknown) (not use-standard))
+      (when (and (eq count :unknown) (not use-standard)
+                 (not (eq (tail-set-type tails) *empty-type*)))
        (return-value-efficiency-note tails))
       (if (or (eq count :unknown) use-standard)
          (make-return-info :kind :unknown
index 690cc2a..b3f02b5 100644 (file)
   (remove-from-dfo block)
   (values))
 
-;;; Do stuff to indicate that the return node Node is being deleted.
-;;; We set the RETURN to NIL.
+;;; Do stuff to indicate that the return node NODE is being deleted.
 (defun delete-return (node)
   (declare (type creturn node))
-  (let ((fun (return-lambda node)))
+  (let* ((fun (return-lambda node))
+         (tail-set (lambda-tail-set fun)))
     (aver (lambda-return fun))
-    (setf (lambda-return fun) nil))
+    (setf (lambda-return fun) nil)
+    (when (and tail-set (not (find-if #'lambda-return (tail-set-funs tail-set))))
+      (setf (tail-set-type tail-set) *empty-type*)))
   (values))
 
 ;;; If any of the VARS in FUN was never referenced and was not
index 0104d3c..2344731 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8alpha.0.11"
+"0.8alpha.0.12"