diff options
author | Stas Boukarev <stassats@gmail.com> | 2024-09-29 13:25:29 +0300 |
---|---|---|
committer | Stas Boukarev <stassats@gmail.com> | 2024-09-29 23:11:51 +0300 |
commit | 5cbd0e1d9c394fd7e120aa161067db4eeb6fd28c (patch) | |
tree | 7803a9d5ecb79637070cf35e6bb6a6d84b75a25e | |
parent | a2586b5d3daa12a0d51e7ebe55d0fb5ff71c4572 (diff) |
Don't tail call BREAK.
-rw-r--r-- | src/compiler/envanal.lisp | 4 |
1 files changed, 3 insertions, 1 deletions
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) |