From d66b1cadc945f36d25e28bd6bbc3421fb0a0aa55 Mon Sep 17 00:00:00 2001
From: dtc <dtc>
Date: Tue, 20 Jan 1998 16:10:44 +0000
Subject: [PATCH] Workaround for the mis-compiling of let-converted tail local
 calls by the byte compiler - a necessary branch was being flushed.

---
 compiler/byte-comp.lisp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/compiler/byte-comp.lisp b/compiler/byte-comp.lisp
index d3c1ee09c..6f191407b 100644
--- a/compiler/byte-comp.lisp
+++ b/compiler/byte-comp.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/byte-comp.lisp,v 1.25 1994/10/31 04:27:28 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/byte-comp.lisp,v 1.26 1998/01/20 16:10:44 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1694,7 +1694,13 @@
 		      (eq (byte-block-info-block next) first-succ)
 		      (eq (component-tail component) first-succ)
 		      (and (basic-combination-p last)
-			   (node-tail-p last)))
+			   (node-tail-p last)
+			   ;; Tail local calls that have been
+			   ;; converted to an assignment need the branch.
+			   (not (and (eq (basic-combination-kind last) :local)
+				     (member (functional-kind
+					      (combination-lambda last))
+					     '(:let :assignment))))))
 	    (output-branch segment
 			   byte-branch-always
 			   (byte-block-info-label
-- 
GitLab