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