0.8.3.50:
authorAlexey Dejneka <adejneka@comail.ru>
Thu, 11 Sep 2003 10:31:56 +0000 (10:31 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Thu, 11 Sep 2003 10:31:56 +0000 (10:31 +0000)
        * Fix compiler failures reported by Paul Dietz: be more
          accurate with BLOCK-LAST treating in CONSTANT-FOLD-CALL and
          DO-NODES.

src/compiler/ir1opt.lisp
src/compiler/macros.lisp
tests/compiler.impure-cload.lisp
version.lisp-expr

index f7e4318..2bf6ecf 100644 (file)
                  (add-continuation-use call prev)
                  (reference-constant prev cont (first values))
                  (setf (continuation-next cont) next)
+                 (let ((block (node-block call)))
+                   (when (eq (block-last block) call)
+                     (setf (block-last block) (continuation-next prev))))
                  ;; FIXME: type checking?
                  (reoptimize-continuation cont)
                  (reoptimize-continuation prev)
index dd15d8c..1f94cc5 100644 (file)
         ,@body
         (when ,(if restart-p
                    `(or (eq ,node-var (block-last ,n-block))
+                         (eq ,cont-var (node-cont (block-last ,n-block)))
                          (block-delete-p ,n-block))
                    `(eq ,cont-var ,n-last-cont))
           (return nil))))))
index b012b17..09c0fb5 100644 (file)
   (declare (type (double-float -0d0) x))
   (declare (optimize speed))
   (+ x (sqrt (log (random 1d0)))))
+
+;;; compiler failures reported by Paul Dietz: inaccurate dealing with
+;;; BLOCK-LAST in CONSTANT-FOLD-CALL and DO-NODES
+(defun #:foo (a b c d)
+  (declare (type (integer -1 1000655) b)
+           (optimize (speed 3) (safety 1) (debug 1)))
+  (- (logior
+      (abs (- (+ b (logandc1 -473949 (max 5165 (abs (logandc1 a 250775)))))))
+      (logcount (logeqv (max (logxor (abs c) -1) 0) -4)))
+     d))
+
+(defun #:foo (a d)
+  (declare (type (integer -8507 26755) a)
+           (type (integer -393314538 2084485) d)
+           (optimize (speed 3) (safety 1) (debug 1)))
+  (gcd
+   (if (= 0 a) 10 (abs -1))
+   (logxor -1
+           (min -7580
+                (max (logand a 31365125) d)))))
+
 \f
 (sb-ext:quit :unix-status 104)
index 3d3da69..60fbb52 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.3.49"
+"0.8.3.50"