From 0118ad1a3d67833723c6c237e99dbc55ec9f02ca Mon Sep 17 00:00:00 2001 From: Alexey Dejneka Date: Mon, 5 May 2003 06:31:53 +0000 Subject: [PATCH] 0.8aplha.0.12: Don't emit a note about inefficient return convention for a function, which does not return at all. --- src/compiler/gtn.lisp | 3 ++- src/compiler/ir1util.lisp | 10 ++++++---- version.lisp-expr | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/compiler/gtn.lisp b/src/compiler/gtn.lisp index 0aa7f2b..4a3352f 100644 --- a/src/compiler/gtn.lisp +++ b/src/compiler/gtn.lisp @@ -167,7 +167,8 @@ (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 diff --git a/src/compiler/ir1util.lisp b/src/compiler/ir1util.lisp index 690cc2a..b3f02b5 100644 --- a/src/compiler/ir1util.lisp +++ b/src/compiler/ir1util.lisp @@ -996,13 +996,15 @@ (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 diff --git a/version.lisp-expr b/version.lisp-expr index 0104d3c..2344731 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4