0.8.7.16:
authorAlexey Dejneka <adejneka@comail.ru>
Sat, 17 Jan 2004 05:52:21 +0000 (05:52 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Sat, 17 Jan 2004 05:52:21 +0000 (05:52 +0000)
        * Fix PFD's MISC.275: in IR1-OPTIMIZE-CAST DEST of an
          multi-use LVAR may be not a block start.

CREDITS
NEWS
src/compiler/ir1opt.lisp
tests/compiler.pure.lisp
version.lisp-expr

diff --git a/CREDITS b/CREDITS
index d2a45a1..fe88f80 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -540,11 +540,12 @@ Alexey Dejneka:
   tremendous amount of work on the compiler in particular, fixing
   bugs and refactoring.
 
-Paul Dietz
-  He is in the process of writing a comprehensive test suite for the
-  requirements of the ANSI Common Lisp standard.  Already, at the
-  halfway stage, it has caught hundreds of bugs in SBCL, and provided
-  simple test cases for them.
+Paul Dietz He is in the process of writing a comprehensive test suite
+  for the requirements of the ANSI Common Lisp standard. Already, at
+  the halfway stage, it has caught hundreds of bugs in SBCL, and
+  provided simple test cases for them. His random crash tester has
+  caught an old deep problem in the implementation of the stack
+  analysis phase in the compiler.
 
 Miles Egan
   He creates binary packages of SBCL releases for Red Hat and other
diff --git a/NEWS b/NEWS
index 984410d..f522482 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2246,6 +2246,8 @@ changes in sbcl-0.8.8 relative to sbcl-0.8.7:
   * fixed some bugs revealed by Paul Dietz' test suite:
     ** in stack analysys liveness information is propagated from
        non-local entry points.
+    ** pathwise CAST removing failed when the CAST node did not start
+       a block.
 
 planned incompatible changes in 0.8.x:
   * (not done yet, but planned:) When the profiling interface settles
index 61aea84..46ab1ba 100644 (file)
                            (immediately-used-p value use))
                   (unless next-block
                     (when ctran (ensure-block-start ctran))
-                    (setq next-block (first (block-succ (node-block cast)))))
+                    (setq next-block (first (block-succ (node-block cast))))
+                    (ensure-block-start (node-prev cast)))
                   (%delete-lvar-use use)
                   (add-lvar-use use lvar)
                   (unlink-blocks (node-block use) (node-block cast))
index 0e493f5..eefc810 100644 (file)
                 :good
                 (values result1 result2))))
          :good))
+;;; MISC.275
+(assert
+ (zerop
+  (funcall
+   (compile
+    nil
+    '(lambda (b)
+      (declare (notinline funcall min coerce))
+      (declare
+       (optimize (speed 1)
+        (space 2)
+        (safety 2)
+        (debug 1)
+        (compilation-speed 1)))
+      (flet ((%f12 (f12-1)
+               (coerce
+                (min
+                 (if f12-1 (multiple-value-prog1
+                               b (return-from %f12 0))
+                     0))
+                'integer)))
+        (funcall #'%f12 0))))
+   -33)))
index 566f174..745e2aa 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.7.15"
+"0.8.7.16"