0.8.5.8:
authorAlexey Dejneka <adejneka@comail.ru>
Sun, 26 Oct 2003 15:34:38 +0000 (15:34 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Sun, 26 Oct 2003 15:34:38 +0000 (15:34 +0000)
        * Fix bugs MISC.101 and MISC.103 found by Paul Dietz:
          FLUSH-DEST: set BLOCK-TYPE-CHECK attribute for USEs' blocks.

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

diff --git a/NEWS b/NEWS
index bb0555b..278a163 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2180,6 +2180,7 @@ changes in sbcl-0.8.6 relative to sbcl-0.8.5:
        constant 0.
     ** implementation of ASH-MOD32 on X86 did not work for the shift
        greater than 32.
+    ** FLUSH-DEST did not mark blocks for type check regeneration.
 
 planned incompatible changes in 0.8.x:
   * (not done yet, but planned:) When the profiling interface settles
index e41c094..5929a32 100644 (file)
       (let ((prev (node-prev use)))
        (let ((block (ctran-block prev)))
           (setf (component-reoptimize (block-component block)) t)
-          (setf (block-attributep (block-flags block) flush-p type-asserted)
+          (setf (block-attributep (block-flags block)
+                                  flush-p type-asserted type-check)
                 t)))
       (setf (node-lvar use) nil))
     (setf (lvar-uses lvar) nil))
index bd999b7..1d17955 100644 (file)
                          (declare (type (integer 4303063 101130078) a))
                          (mask-field (byte 18 2) (ash a 77))))
               57132532)))
+
+;;; MISC.101 and MISC.103: FLUSH-DEST did not mark the USE's block for
+;;; type check regeneration
+(assert (eql (funcall
+              (compile nil '(lambda (a c)
+                             (declare (type (integer 185501219873 303014665162) a))
+                             (declare (type (integer -160758 255724) c))
+                             (declare (optimize (speed 3)))
+                             (let ((v8
+                                    (- -554046873252388011622614991634432
+                                       (ignore-errors c)
+                                       (unwind-protect 2791485))))
+                               (max (ignore-errors a)
+                                    (let ((v6 (- v8 (restart-case 980))))
+                                      (min v8 v6))))))
+              259448422916 173715)
+             259448422916))
+(assert (eql (funcall
+              (compile nil '(lambda (a b)
+                             (min -80
+                              (abs
+                               (ignore-errors
+                                 (+
+                                  (logeqv b
+                                          (block b6
+                                            (return-from b6
+                                              (load-time-value -6876935))))
+                                  (if (logbitp 1 a) b (setq a -1522022182249))))))))
+              -1802767029877 -12374959963)
+             -80))
index 55ab16b..7b73185 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.7"
+"0.8.5.8"