From 5cbd0e1d9c394fd7e120aa161067db4eeb6fd28c Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Sun, 29 Sep 2024 13:25:29 +0300 Subject: Don't tail call BREAK. --- src/compiler/envanal.lisp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/envanal.lisp b/src/compiler/envanal.lisp index 03cb1a314..df07bd09f 100644 --- a/src/compiler/envanal.lisp +++ b/src/compiler/envanal.lisp @@ -579,6 +579,8 @@ (let ((result (return-result ret))) (do-uses (use result) (when (and (immediately-used-p result use) + (not (and (combination-p use) + (lvar-fun-is (combination-fun use) '(break)))) (or (not (eq (node-derived-type use) *empty-type*)) (not (basic-combination-p use)) ;; This prevents external entry points from @@ -587,7 +589,7 @@ ;; functions they are the entry point for. (eq (basic-combination-kind use) :local))) (setf (node-tail-p use) t))))))) - ;; Tail call non returning functions if no debugging is wanted. + ;; Tail call non-returning functions if no debugging is wanted. (dolist (block (block-pred (component-tail component))) (let ((last (block-last block))) (when (and (combination-p last) -- cgit v1.2.3-70-g09d2