* Our transforms optimized (* <int> 1.0) into <int>. Oops.
* bug fix: a semaphore with multiple waiters and some of them unwinding due
to timeouts could be left in an inconsistent state.
* bug fix: fix typo in "Reporting Bugs" section of the manual (lp#520366)
+ * bug fix: misoptimization of multiplication by one in
+ (SB-C::FLOAT-ACCURACY 0) policies.
changes in sbcl-1.0.37 relative to sbcl-1.0.36:
* enhancement: Backtrace from THROW to uncaught tag on x86oids now shows
(if (minusp y)
'(%negate x)
'x)))))
- (def * single-float 1.0 -1.0)
- (def * double-float 1.0d0 -1.0d0))
+ (def single-float 1.0 -1.0)
+ (def double-float 1.0d0 -1.0d0))
;;; Return the reciprocal of X if it can be represented exactly, NIL otherwise.
(defun maybe-exact-reciprocal (x)
(assert (not (ctu:find-named-callees fun)))
(assert (= 1 (funcall fun #*000001)))
(assert (= 0 (funcall fun #*000010)))))
+
+(with-test (:name :mult-by-one-in-float-acc-zero)
+ (assert (eql 1.0 (funcall (compile nil `(lambda (x)
+ (declare (optimize (sb-c::float-accuracy 0)))
+ (* x 1.0)))
+ 1)))
+ (assert (eql -1.0 (funcall (compile nil `(lambda (x)
+ (declare (optimize (sb-c::float-accuracy 0)))
+ (* x -1.0)))
+ 1)))
+ (assert (eql 1.0d0 (funcall (compile nil `(lambda (x)
+ (declare (optimize (sb-c::float-accuracy 0)))
+ (* x 1.0d0)))
+ 1)))
+ (assert (eql -1.0d0 (funcall (compile nil `(lambda (x)
+ (declare (optimize (sb-c::float-accuracy 0)))
+ (* x -1.0d0)))
+ 1))))
;;; 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".)
-"1.0.37.16"
+"1.0.37.17"