master: Don't break specialized-xeps by tail calling them

stassats via Sbcl-commits <[email protected]> Wed, 06 May 2026 03:31:06 +0000
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  f22a5de2afb2075b9245aef49235c52a0ca75d1b (commit)
      from  13601a3af1616bad0848ec6bbcb5196c3afbe47b (commit)

- Log -----------------------------------------------------------------
commit f22a5de2afb2075b9245aef49235c52a0ca75d1b
Author: Stas Boukarev <[email protected]>
Date:   Wed May 6 06:30:00 2026 +0300

    Don't break specialized-xeps by tail calling them
---
 src/compiler/ir1opt.lisp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp
index 5b4485097..cd6abdc07 100644
--- a/src/compiler/ir1opt.lisp
+++ b/src/compiler/ir1opt.lisp
@@ -3244,7 +3244,9 @@
     (cond ((delay-p cast)
            (unless (policy cast (>= insert-debug-catch 2)) ;; used to defeat TCO
              (when (do-uses (use value t)
-                     (unless (immediately-used-p value use)
+                     (unless (and (immediately-used-p value use)
+                                  (not (and (combination-p use)
+                                            (unboxed-specialized-return-p (combination-fun-debug-name use)))))
                        (return)))
                (delete-cast cast)
                t)))

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL