From: Alexey Dejneka Date: Mon, 7 Mar 2005 06:53:14 +0000 (+0000) Subject: 0.8.20.8: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=3dfb34c5c4c8a909530a617162c18d929ffd24a1;p=sbcl.git 0.8.20.8: * Disable backtrace checking on (and x86 linux). * Describe bugs MISC.555 and MISC.563. * Define out-of-line %ATAN2 on x86 (fix MISC.564). --- diff --git a/BUGS b/BUGS index 24a3d3c..60cf564 100644 --- 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 --- 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) diff --git a/src/code/irrat.lisp b/src/code/irrat.lisp index b821b7a..ef7f6a3 100644 --- a/src/code/irrat.lisp +++ b/src/code/irrat.lisp @@ -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) diff --git a/src/compiler/float-tran.lisp b/src/compiler/float-tran.lisp index 538ccc0..89c60d9 100644 --- a/src/compiler/float-tran.lisp +++ b/src/compiler/float-tran.lisp @@ -1301,6 +1301,7 @@ ;;; ;;; 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)) diff --git a/tests/debug.impure.lisp b/tests/debug.impure.lisp index f8ddbdb..1c4225d 100644 --- a/tests/debug.impure.lisp +++ b/tests/debug.impure.lisp @@ -181,7 +181,7 @@ '((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)) @@ -208,6 +208,7 @@ (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))) diff --git a/tests/float.pure.lisp b/tests/float.pure.lisp index be2a607..a7813e3 100644 --- a/tests/float.pure.lisp +++ b/tests/float.pure.lisp @@ -97,3 +97,15 @@ 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)) diff --git a/version.lisp-expr b/version.lisp-expr index 70e1265..ecb1bf6 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"