From 1c3b26c74e43b44057363d296feeb444de171e92 Mon Sep 17 00:00:00 2001
From: dtc <dtc>
Date: Fri, 3 Dec 1999 16:28:28 +0000
Subject: [PATCH] Add a check for null continuation destinations in
 maybe-convert-to-assignment, aborting the conversion if such a ref is found.
 Problem noted by Peter Van Eynde; patch based on a suggestion from Rob. Add a
 similar check in maybe-let-convert which is bound to have similar problems.
 This will most likely need more work as aborting is not optimal, and there
 appear to be other similar problems.

---
 compiler/locall.lisp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/compiler/locall.lisp b/compiler/locall.lisp
index 6d9881952..73156e4c2 100644
--- a/compiler/locall.lisp
+++ b/compiler/locall.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/locall.lisp,v 1.47 1998/03/01 21:55:45 dtc Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/locall.lisp,v 1.48 1999/12/03 16:28:28 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -949,7 +949,8 @@
 	       (not (functional-entry-function fun)))
       (let* ((ref-cont (node-cont (first refs)))
 	     (dest (continuation-dest ref-cont)))
-	(when (and (basic-combination-p dest)
+	(when (and dest
+		   (basic-combination-p dest)
 		   (eq (basic-combination-fun dest) ref-cont)
 		   (eq (basic-combination-kind dest) :local)
 		   (not (block-delete-p (node-block dest)))
@@ -1050,7 +1051,9 @@
 	  (call-fun nil))
       (when (and (dolist (ref (leaf-refs fun) t)
 		   (let ((dest (continuation-dest (node-cont ref))))
-		     (when (block-delete-p (node-block dest)) (return nil))
+		     (when (or (not dest)
+			       (block-delete-p (node-block dest)))
+		       (return nil))
 		     (let ((home (node-home-lambda ref)))
 		       (unless (eq home fun)
 			 (when call-fun (return nil))
-- 
GitLab