glibc/soft-fp
Joseph Myers 1c7a4a51a3 soft-fp: Fix _FP_FMA when product is zero and third argument is finite (bug 17932).
soft-fp's _FP_FMA fails to set the result's exponent for cases where
the result of the multiplication is 0, yielding incorrect (arbitrary,
depending on uninitialized values) results for those cases.  This
affects libm for architectures using soft-fp to implement fma.  This
patch adds the exponent setting and tests for this case.

Tested for ARM soft-float (which uses soft-fp fma), x86_64 and x86 (to
verify not introducing new libm test failures there).

(This bug showed up in testing my patch to move the Linux kernel to
current soft-fp.  math/Makefile has "override CFLAGS +=
-Wno-uninitialized" which would have stopped compiler warnings from
showing up this problem, although I wouldn't be surprised if removing
that shows spurious warnings from this code, if the compiler fails to
follow that various cases where the exponent is uninitialized don't
need it initialized because the class is set to a value meaning the
uninitialized exponent isn't used.)

	[BZ #17932]
	* soft-fp/op-common.h (_FP_FMA): Set exponent of result in case
	where multiplication results in zero and third argument is finite
	and nonzero.
	* math/auto-libm-test-in: Add more tests of fma.
	* math/auto-libm-test-out: Regenerated.
2015-02-06 15:44:07 +00:00
..
adddf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
addsf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
addtf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Banner
divdf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
divsf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
divtf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
double.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
eqdf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
eqsf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
eqtf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
extenddftf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
extended.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
extendsfdf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
extendsftf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
extendxftf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixdfdi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixdfsi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixdfti.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixsfdi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixsfsi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixsfti.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixtfdi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixtfsi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixtfti.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunsdfdi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunsdfsi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunsdfti.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunssfdi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunssfsi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunssfti.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunstfdi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunstfsi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fixunstfti.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatdidf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatdisf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatditf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatsidf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatsisf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatsitf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floattidf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floattisf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floattitf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatundidf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatundisf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatunditf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatunsidf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatunsisf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatunsitf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatuntidf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatuntisf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
floatuntitf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fmadf4.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fmasf4.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fmatf4.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gedf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gesf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ledf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lesf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
letf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Makefile Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
muldf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mulsf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
multf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
negdf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
negsf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
negtf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
op-1.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
op-2.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
op-4.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
op-8.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
op-common.h soft-fp: Fix _FP_FMA when product is zero and third argument is finite (bug 17932). 2015-02-06 15:44:07 +00:00
quad.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
single.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
soft-fp.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sqrtdf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sqrtsf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sqrttf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
subdf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
subsf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
subtf3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
testit.c Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
truncdfsf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
trunctfdf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
trunctfsf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
trunctfxf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unorddf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unordsf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unordtf2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00