0.8.20.8:
authorAlexey Dejneka <adejneka@comail.ru>
Mon, 7 Mar 2005 06:53:14 +0000 (06:53 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Mon, 7 Mar 2005 06:53:14 +0000 (06:53 +0000)
        * Disable backtrace checking on (and x86 linux).
        * Describe bugs MISC.555 and MISC.563.
        * Define out-of-line %ATAN2 on x86 (fix MISC.564).

BUGS
NEWS
src/code/irrat.lisp
src/compiler/float-tran.lisp
tests/debug.impure.lisp
tests/float.pure.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index 24a3d3c..60cf564 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -2051,3 +2051,27 @@ WORKAROUND:
     fatal error encountered in SBCL pid 8356:
     GC invariant lost, file "gc-common.c", line 605
   on ppc/darwin. Test disabled for the duration.
+
+375: MISC.555
+    (compile nil '(lambda (p1)
+                   (declare (optimize (speed 1) (safety 2) (debug 2) (space 0))
+                            (type keyword p1))
+                   (keywordp p1)))
+
+  fails on hairy type check in IR2.
+
+  1. KEYWORDP is MAYBE-INLINE expanded (before TYPEP-like
+     transformation could eliminate it).
+
+  2. From the only call of KEYWORDP the type of its argument is
+     derived to be KEYWORD.
+
+  2. Type check for P1 is generated; it uses KEYWORDP to perform the
+     check, and so references the local function; from the KEYWORDP
+     argument type new CAST to KEYWORD is generated. The compiler
+     loops forever.
+
+376: MISC.563
+  Type deriver for CONJUGATE thinks that it returns an object of the
+  same type as its argument, which is wrong for such types as (EQL
+  #C(1 2)).
diff --git a/NEWS b/NEWS
index d87b9e5..dbe40c6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -21,6 +21,8 @@ changes in sbcl-0.8.21 (0.9alpha.1?) relative to sbcl-0.8.20:
   * contrib improvement: the SB-SIMPLE-STREAMS contrib now defines
     STRING-SIMPLE-STREAM and FILE-SIMPLE-STREAM as subclasses of
     STRING-STREAM and FILE-STREAM, respectively.
+  * fixed some bugs revealed by Paul Dietz' test suite:
+    ** MISC.564: defined out-of-line version of %ATAN2 on x86.
 
 changes in sbcl-0.8.20 (0.9alpha.0?) relative to sbcl-0.8.19:
   * fixed inspection of specialized arrays. (thanks to Simon Alexander)
index b821b7a..ef7f6a3 100644 (file)
@@ -54,6 +54,9 @@
 (def-math-rtn "acos" 1)
 #!-x86 (def-math-rtn "atan" 1)
 #!-x86 (def-math-rtn "atan2" 2)
+#!+x86 ;; for constant folding
+(defun %atan2 (x y)
+  (%atan2 x y))
 (def-math-rtn "sinh" 1)
 (def-math-rtn "cosh" 1)
 (def-math-rtn "tanh" 1)
index 538ccc0..89c60d9 100644 (file)
 ;;;
 ;;; FIXME: ANSI allows any subtype of REAL for the components of COMPLEX.
 ;;; So what if the input type is (COMPLEX (SINGLE-FLOAT 0 1))?
+;;; Or (EQL #C(1 2))?
 (defoptimizer (conjugate derive-type) ((num))
   (lvar-type num))
 
index f8ddbdb..1c4225d 100644 (file)
                                   '((flet not-optimized))
                                   (list '(flet test) #'not-optimized)))))
 
-#-(or alpha) ; bug 61
+#-(or alpha (and x86 linux)) ; bug 61
 (progn
   (defun throw-test ()
     (throw 'no-such-tag t))
 (defun bt.5 (&optional (opt (oops)))
   (list opt))
 
+#-(and x86 linux)
 (macrolet ((with-details (bool &body body)
              `(let ((sb-debug:*show-entry-point-details* ,bool))
                 ,@body)))
index be2a607..a7813e3 100644 (file)
                         floating-point-overflow))
   (assert (raises-error? (scale-float 1.0d0 (1+ most-positive-fixnum))
                         floating-point-overflow)))
+
+;;; MISC.564: no out-of-line %ATAN2 for constant folding
+(assert (typep
+  (funcall
+   (compile
+    nil
+    '(lambda (p1)
+      (declare (optimize (speed 3) (safety 2) (debug 3) (space 0))
+       (type complex p1))
+      (phase (the (eql #c(1.0d0 2.0d0)) p1))))
+   #c(1.0d0 2.0d0))
+    'double-float))
index 70e1265..ecb1bf6 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.20.7"
+"0.8.20.8"