0.8.5.36:
authorAlexey Dejneka <adejneka@comail.ru>
Fri, 14 Nov 2003 08:45:50 +0000 (08:45 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Fri, 14 Nov 2003 08:45:50 +0000 (08:45 +0000)
        * Fix PFD bugs MISC.166, 167, 168: do not perform tail- and
          let-convertion, if block of lambda's BIND node is to be
          deleted.

src/compiler/locall.lisp
version.lisp-expr

index 3239cd3..7edff10 100644 (file)
                     (eq (basic-combination-fun dest) ref-lvar)
                     (eq (basic-combination-kind dest) :local)
                      (not (node-to-be-deleted-p dest))
+                     (not (block-delete-p (lambda-block clambda)))
                     (cond ((ok-initial-convert-p clambda) t)
                           (t
                            (reoptimize-lvar ref-lvar)
 ;;; tail-convert. The second is the value of M-C-T-A.
 (defun maybe-convert-tail-local-call (call)
   (declare (type combination call))
-  (let ((return (lvar-dest (node-lvar call))))
+  (let ((return (lvar-dest (node-lvar call)))
+        (fun (combination-lambda call)))
     (aver (return-p return))
     (when (and (not (node-tail-p call)) ; otherwise already converted
                ;; this is a tail call
                ;; non-tail so that we can use known return inside the
                ;; component.
               (not (eq (functional-kind (node-home-lambda call))
-                       :external)))
+                       :external))
+               (not (block-delete-p (lambda-block fun))))
       (node-ends-block call)
-      (let ((block (node-block call))
-           (fun (combination-lambda call)))
+      (let ((block (node-block call)))
        (setf (node-tail-p call) t)
        (unlink-blocks block (first (block-succ block)))
        (link-blocks block (lambda-block fun))
index 4a41772..9f7237b 100644 (file)
@@ -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.5.35"
+"0.8.5.36"