0.9.13.2:
authorAlexey Dejneka <adejneka@comail.ru>
Sun, 28 May 2006 04:16:09 +0000 (04:16 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Sun, 28 May 2006 04:16:09 +0000 (04:16 +0000)
        * Fix bug MISC.641: unused optional entry deletion after
          physical environment analysis can cause LET-conversion, so
          the latter must deal with NLX-INFOs.

NEWS
src/compiler/locall.lisp
tests/compiler.pure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index fe8ebb5..a92dd40 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,9 @@
 ;;;; -*- coding: utf-8; -*-
+changes in sbcl-0.9.14 relative to sbcl-0.9.13:
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** MISC.641: LET-conversion were not supposed to work in late
+       compilation stages.
+
 changes in sbcl-0.9.13 relative to sbcl-0.9.12:
   * new feature: source path information is generated for macro-expansion
     errors for use in IDE's like Slime (thanks to Helmut Eller)
index 8d34d60..f480fcf 100644 (file)
   (depart-from-tail-set clambda)
 
   (let* ((home (node-home-lambda call))
-         (home-physenv (lambda-physenv home)))
+         (home-physenv (lambda-physenv home))
+         (physenv (lambda-physenv clambda)))
 
     (aver (not (eq home clambda)))
 
     (setf (lambda-home clambda) home)
     (setf (lambda-physenv clambda) home-physenv)
 
+    (when physenv
+      (setf (physenv-nlx-info home-physenv)
+            (nconc (physenv-nlx-info physenv)
+                   (physenv-nlx-info home-physenv))))
+
     ;; All of CLAMBDA's LETs belong to HOME now.
     (let ((lets (lambda-lets clambda)))
       (dolist (let lets)
index 213aaa7..0f94a7a 100644 (file)
                            summing i)
                      x)))
   (assert (= a (random most-positive-fixnum))))
+
+;;; MISC.641: LET-conversion after physical environment analysis lost NLX-INFOs
+(let ((form '(lambda ()
+              (declare (optimize (speed 1) (space 0) (debug 2)
+                           (compilation-speed 0) (safety 1)))
+              (flet ((%f3 (f3-1 &key (key1 (count (floor 0 (min -74 0)) #())))
+                          0))
+                   (apply #'%f3 0 nil)))))
+  (assert (zerop (funcall (compile nil form)))))
index f3df9a5..55fda2e 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.9.13.1"
+"0.9.13.2"