This commit is contained in:
Stas Boukarev 2024-02-10 00:49:57 +03:00
parent 0a2ba825c7
commit 5cb50200e4
3 changed files with 10 additions and 28 deletions

View file

@ -1605,7 +1605,6 @@
(declare (type component component))
(init-var-constraints component)
;; Previous results can confuse propagation and may loop forever
(print-all-blocks component)
(do-blocks (block component)
(setf (block-out block) nil)
(let ((last (block-last block)))

View file

@ -679,20 +679,17 @@
(let ((use-home (node-home-lambda use)))
(cond ((or (eq (functional-kind use-home) :deleted)
(block-delete-p (node-block use))))
((and (basic-combination-p use)
(or (eq (functional-kind (combination-lambda use)) :deleted)
(and (eq (basic-combination-kind use) :local)
(block-delete-p (lambda-block (combination-lambda use)))))))
(t;; (not (and (basic-combination-p use)
;; (eq (basic-combination-kind use) :local)))
((not (and (basic-combination-p use)
(eq (basic-combination-kind use) :local)))
(use-union (node-derived-type use)))
((or (eq (functional-kind (combination-lambda use)) :deleted)
(block-delete-p (lambda-block (combination-lambda use)))))
(t
;; (aver (eq (lambda-tail-set use-home)
;; (lambda-tail-set (combination-lambda use))))
;; (when (combination-p use)
;; (when (nth-value 1 (maybe-convert-tail-local-call use))
;; (return-from find-result-type t)))
))))
(aver (eq (lambda-tail-set use-home)
(lambda-tail-set (combination-lambda use))))
(when (combination-p use)
(when (nth-value 1 (maybe-convert-tail-local-call use))
(return-from find-result-type t)))))))
(let ((int
;; (values-type-intersection
;; (continuation-asserted-type result) ; FIXME -- APD, 2002-01-26

View file

@ -1363,20 +1363,6 @@
(return nil)))
(t (return nil)))))))
(defun local-tail-local-p (call)
(let ((return (node-dest call))
(fun (combination-lambda call)))
(and (return-p return)
(immediately-used-p (return-result return) call)
(only-harmless-cleanups (node-block call)
(node-block return))
;; If the call is in an XEP, we might decide to make it
;; non-tail so that we can use known return inside the
;; component.
(not (eq (functional-kind (node-home-lambda call))
:external))
(not (block-delete-p (lambda-block fun))))))
;;; If a potentially TR local call really is TR, then convert it to
;;; jump directly to the called function. We also call
;;; MAYBE-CONVERT-TO-ASSIGNMENT. The first value is true if we
@ -1456,7 +1442,7 @@
(return nil))
(let ((home (node-home-lambda ref)))
(if (eq home fun)
(unless (local-tail-local-p dest)
(unless (node-tail-p dest)
(return nil))
(let ((dest-ctran
(or (node-next dest)