about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-11-12 16:24:00 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-11-12 16:24:00 +0000
commit32b71ad358a949cbfe16d527f9a1015b95bb9baf (patch)
tree7353a1281806cd6c5b92c40f3b6ec8be6dcfbee2 /ChangeLog
parent1a44f1433ee4afad10eb4cb1a08d8a86b286cd40 (diff)
downloadglibc-32b71ad358a949cbfe16d527f9a1015b95bb9baf.tar.gz
glibc-32b71ad358a949cbfe16d527f9a1015b95bb9baf.tar.xz
glibc-32b71ad358a949cbfe16d527f9a1015b95bb9baf.zip
Fix powerpc64 lround, lroundf, llround, llroundf spurious "inexact" exceptions (bug 19235).
Similar to bug 19134 for powerpc32, the powerpc64 implementations of
lround, lroundf, llround, llroundf can raise spurious "inexact"
exceptions for integer arguments from adding 0.5 then converting to
integer (this does not apply to the power5+ version for double, which
uses the frin instruction which is defined never to raise "inexact"; I
don't know why power5+ doesn't use that version for float as well).

This patch fixes the bug in a similar way to the powerpc32 bug, by
testing for integers (adding and subtracting 2^52 and comparing with
the value before that addition and subtraction) and not adding 0.5 in
that case.

The powerpc maintainers may wish to look at making power5+ / power6x /
power8 use frin for float lround / llround as well as for double,
unless there's some reason I've missed that this isn't beneficial.

Tested for powerpc64.

	[BZ #19235]
	* sysdeps/powerpc/powerpc64/fpu/s_llround.S (__llround): Do not
	add 0.5 to integer arguments.
	* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S (__llroundf):
	Likewise.
	(.LC2): New object.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog9
1 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 2e486bab41..e902b8125b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2015-11-12  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #19235]
+	* sysdeps/powerpc/powerpc64/fpu/s_llround.S (__llround): Do not
+	add 0.5 to integer arguments.
+	* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S (__llroundf):
+	Likewise.
+	(.LC2): New object.
+
 2015-11-11  Mike Frysinger  <vapier@gentoo.org>
 
 	* scripts/pylintrc (reports): Set to no.