ibm-ldouble.c (__gcc_qadd): Fix add of normal number and qNaN to not raise an inexact exception.

libgcc/ChangeLog:

2013-12-03  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>

	* config/rs6000/ibm-ldouble.c (__gcc_qadd): Fix add
	of normal number and qNaN to not raise an inexact exception.

gcc/testsuite/ChangeLog:

2013-12-03  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>

	* gcc.target/powerpc/pr57363.c: New test.

From-SVN: r205645
This commit is contained in:
Adhemerval Zanella 2013-12-03 18:57:37 +00:00 committed by Ulrich Weigand
parent ba4fa5819f
commit b03fb8c996
4 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2013-12-03 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* gcc.target/powerpc/pr57363.c: New test.
2013-12-03 Wei Mi <wmi@google.com>
PR rtl-optimization/59020

View File

@ -0,0 +1,19 @@
/* { dg-do run { target { powerpc*-*-linux* } } } */
/* { dg-options "-mlong-double-128" } */
/* Check if adding a qNAN and a normal long double does not generate a
inexact exception. */
#define _GNU_SOURCE
#include <fenv.h>
int main(void)
{
double x = __builtin_nan ("");
long double y = 1.1L;
feenableexcept (FE_INEXACT);
feclearexcept (FE_ALL_EXCEPT);
x = x + y;
return fetestexcept(FE_INEXACT);
}

View File

@ -1,3 +1,8 @@
2013-12-03 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* config/rs6000/ibm-ldouble.c (__gcc_qadd): Fix add
of normal number and qNaN to not raise an inexact exception.
2013-11-28 Uros Bizjak <ubizjak@gmail.com>
* config/i386/32/sfp-machine.h (__FP_FRAC_ADDI_4): New macro.

View File

@ -104,6 +104,8 @@ __gcc_qadd (double a, double aa, double c, double cc)
if (nonfinite (z))
{
if (fabs (z) != inf())
return z;
z = cc + aa + c + a;
if (nonfinite (z))
return z;