From eb360c8c93092c0c167458b4aefbe52479848527 Mon Sep 17 00:00:00 2001 From: Alexey Dejneka Date: Sat, 3 May 2003 07:05:24 +0000 Subject: [PATCH] 0.8aplha.0.5: Fixed bug reported by WHN 2003-05-02: * CHANGE-REF-LEAF incompatibly changes REF derived type in BASIC-COMBINATION-FUN. --- src/compiler/ir1opt.lisp | 2 ++ src/compiler/ir1util.lisp | 5 ++++- version.lisp-expr | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp index d91e2ca..d585c20 100644 --- a/src/compiler/ir1opt.lisp +++ b/src/compiler/ir1opt.lisp @@ -1737,6 +1737,8 @@ (when (and (combination-p use) (eq (continuation-fun-name (combination-fun use)) 'list)) + + ;; FIXME: VALUES might not satisfy an assertion on NODE-CONT. (change-ref-leaf (continuation-use (combination-fun node)) (find-free-fun 'values "in a strange place")) (setf (combination-kind node) :full) diff --git a/src/compiler/ir1util.lisp b/src/compiler/ir1util.lisp index b331c40..690cc2a 100644 --- a/src/compiler/ir1util.lisp +++ b/src/compiler/ir1util.lisp @@ -1268,7 +1268,10 @@ (setf (ref-leaf ref) leaf) (setf (leaf-ever-used leaf) t) (let ((ltype (leaf-type leaf))) - (if (fun-type-p ltype) + (if (let* ((cont (node-cont ref)) + (dest (continuation-dest cont))) + (and (basic-combination-p dest) + (eq cont (basic-combination-fun dest)))) (setf (node-derived-type ref) ltype) (derive-node-type ref ltype))) (reoptimize-continuation (node-cont ref))) diff --git a/version.lisp-expr b/version.lisp-expr index b9a1adb..fc63d9f 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.8alpha.0.4" +"0.8alpha.0.5" -- 1.7.10.4