From 8f4d316aabdd615cc7d1a3d57e40cfffbe2c749c Mon Sep 17 00:00:00 2001 From: Alexey Dejneka Date: Thu, 18 Sep 2003 06:26:57 +0000 Subject: [PATCH] 0.8.3.75: * Do not let-convert into a deleted function. --- src/compiler/locall.lisp | 2 ++ tests/compiler.impure-cload.lisp | 12 ++++++++++++ version.lisp-expr | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/compiler/locall.lisp b/src/compiler/locall.lisp index 4a8ab19..661896a 100644 --- a/src/compiler/locall.lisp +++ b/src/compiler/locall.lisp @@ -1033,6 +1033,8 @@ (eq (basic-combination-fun dest) ref-lvar) (eq (basic-combination-kind dest) :local) (not (block-delete-p (node-block dest))) + (neq (functional-kind (node-home-lambda dest)) + :deleted) (cond ((ok-initial-convert-p clambda) t) (t (reoptimize-lvar ref-lvar) diff --git a/tests/compiler.impure-cload.lisp b/tests/compiler.impure-cload.lisp index 194a4c6..4f275bd 100644 --- a/tests/compiler.impure-cload.lisp +++ b/tests/compiler.impure-cload.lisp @@ -251,5 +251,17 @@ (LET ((V5 (MIN 31883 (LOGCOUNT A)))) (IF (/= B V5) (IF (EQL 122911784 V5) -43765 1487) B))) +;;; let-conversion of a function into deleted one +(defun #:foo (a c) + (declare (type (integer -883 1566) a) + (type (integer -1 0) c) + (optimize (speed 3) (safety 1) (debug 1))) + (flet ((%f8 () c)) + (flet ((%f5 () + (if (< c a) + (return-from %f5 (if (= -4857 a) (%f8) (%f8))) + c))) + (if (<= 11 c) (%f5) c)))) + (sb-ext:quit :unix-status 104) diff --git a/version.lisp-expr b/version.lisp-expr index 169ad62..a860340 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.8.3.74" +"0.8.3.75" -- 1.7.10.4