From: Nikodemus S. <de...@us...> - 2010-03-30 10:09:14
|
Update of /cvsroot/sbcl/sbcl/tests In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv27233/tests Modified Files: compiler.pure.lisp Log Message: 1.0.37.17: multiplication-by-one misoptimization in (FLOAT-ACCURACY 0) policies * Our transforms optimized (* <int> 1.0) into <int>. Oops. Index: compiler.pure.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tests/compiler.pure.lisp,v retrieving revision 1.225 retrieving revision 1.226 diff -u -d -r1.225 -r1.226 --- compiler.pure.lisp 8 Mar 2010 17:05:41 -0000 1.225 +++ compiler.pure.lisp 30 Mar 2010 10:09:05 -0000 1.226 @@ -3484,3 +3484,21 @@ (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)))) |