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