projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8alpha.0.32:
[sbcl.git]
/
src
/
compiler
/
ir1util.lisp
diff --git
a/src/compiler/ir1util.lisp
b/src/compiler/ir1util.lisp
index
690cc2a
..
b3f02b5
100644
(file)
--- a/
src/compiler/ir1util.lisp
+++ b/
src/compiler/ir1util.lisp
@@
-996,13
+996,15
@@
(remove-from-dfo block)
(values))
(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))
(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))
(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
(values))
;;; If any of the VARS in FUN was never referenced and was not