0.9.11.40: constant folding
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 19 Apr 2006 14:16:05 +0000 (14:16 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 19 Apr 2006 14:16:05 +0000 (14:16 +0000)
 * Out-of-line versions for %SIN, %COS, and %TAN.

NEWS
src/code/irrat.lisp
tests/float.pure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 0b7236a..22a5a9a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -23,6 +23,9 @@ changes in sbcl-0.9.12 relative to sbcl-0.9.11:
     documentation on package locks for details.
   * enhancement: EVAL can process IF-expressions without resorting to the
     compiler.
+  * bug fix: Some operations involving SIN, COS, or TAN weren't being
+    constant-folded properly due to missing out-of-line functions.
+    (reported by Mika Pihlajamäki)
   * bug fix: LISTEN sometimes returned T even in cases where no data was
     immediately available from the stream
   * fixed bug: types of the last two arguments to SET-SYNTAX-FROM-CHAR
index 1a38ed9..0f2b7a3 100644 (file)
              `(defun ,name ,ll (,name ,@ll))))
   (def %atan2 (x y))
   (def %atan (x))
+  (def %tan (x))
   (def %tan-quick (x))
+  (def %cos (x))
   (def %cos-quick (x))
+  (def %sin (x))
   (def %sin-quick (x))
   (def %sqrt (x))
   (def %log (x))
index 3d50fda..d06352c 100644 (file)
    #c(1.0d0 2.0d0))
     'double-float))
 
+;;; More out of line functions (%COS, %SIN, %TAN) for constant folding,
+;;; reported by Mika Pihlajamäki
+(funcall (compile nil '(lambda () (cos (tan (round 0))))))
+(funcall (compile nil '(lambda () (sin (tan (round 0))))))
+(funcall (compile nil '(lambda () (tan (tan (round 0))))))
+
 (with-test (:name (:addition-overflow :bug-372)
             :fails-on '(or :ppc :darwin :mips :freebsd))
   (assert (typep (nth-value
index b07f5a7..5732388 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.9.11.39"
+"0.9.11.40"