diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-10-09 19:21:30 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2014-10-09 19:21:30 +0100 |
commit | 5f60643158669361212ef79bfec16e8c73f4c138 (patch) | |
tree | 77a4f889c3807e7f78e206208cc84647a983fe05 /gcc | |
parent | c386686921f2eecb9f1a419def40b6b55732da98 (diff) | |
download | gcc-5f60643158669361212ef79bfec16e8c73f4c138.zip gcc-5f60643158669361212ef79bfec16e8c73f4c138.tar.gz gcc-5f60643158669361212ef79bfec16e8c73f4c138.tar.bz2 |
Update soft-fp from glibc.
This patch updates libgcc's copy of soft-fp from glibc, adding a
testcase for a bug fix this brings in.
Bootstrapped with no regressions on x86_64-unknown-linux-gnu.
libgcc:
* soft-fp/double.h: Update from glibc.
* soft-fp/eqdf2.c: Likewise.
* soft-fp/eqsf2.c: Likewise.
* soft-fp/eqtf2.c: Likewise.
* soft-fp/extenddftf2.c: Likewise.
* soft-fp/extended.h: Likewise.
* soft-fp/extendsfdf2.c: Likewise.
* soft-fp/extendsftf2.c: Likewise.
* soft-fp/extendxftf2.c: Likewise.
* soft-fp/gedf2.c: Likewise.
* soft-fp/gesf2.c: Likewise.
* soft-fp/getf2.c: Likewise.
* soft-fp/ledf2.c: Likewise.
* soft-fp/lesf2.c: Likewise.
* soft-fp/letf2.c: Likewise.
* soft-fp/op-1.h: Likewise.
* soft-fp/op-2.h: Likewise.
* soft-fp/op-4.h: Likewise.
* soft-fp/op-8.h: Likewise.
* soft-fp/op-common.h: Likewise.
* soft-fp/quad.h: Likewise.
* soft-fp/single.h: Likewise.
* soft-fp/soft-fp.h: Likewise.
* soft-fp/unorddf2.c: Likewise.
* soft-fp/unordsf2.c: Likewise.
* soft-fp/unordtf2.c: Likewise.
* config/c6x/eqd.c (__c6xabi_eqd): Update call to FP_CMP_EQ_D.
* config/c6x/eqf.c (__c6xabi_eqf): Update call to FP_CMP_EQ_S.
* config/c6x/ged.c (__c6xabi_ged): Update call to FP_CMP_D.
* config/c6x/gef.c (__c6xabi_gef): Update call to FP_CMP_S.
* config/c6x/gtd.c (__c6xabi_gtd): Update call to FP_CMP_D.
* config/c6x/gtf.c (__c6xabi_gtf): Update call to FP_CMP_S.
* config/c6x/led.c (__c6xabi_led): Update call to FP_CMP_D.
* config/c6x/lef.c (__c6xabi_lef): Update call to FP_CMP_S.
* config/c6x/ltd.c (__c6xabi_ltd): Update call to FP_CMP_D.
* config/c6x/ltf.c (__c6xabi_ltf): Update call to FP_CMP_S.
gcc/testsuite:
* gcc.dg/torture/float128-extendxf-underflow.c: New test.
From-SVN: r216048
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/float128-extendxf-underflow.c | 40 |
2 files changed, 44 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 89d7f84..d6b22f2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-10-09 Joseph Myers <joseph@codesourcery.com> + + * gcc.dg/torture/float128-extendxf-underflow.c: New test. + 2014-10-09 Markus Trippelsdorf <markus@trippelsdorf.de> * g++.dg/ipa/polymorphic-call-1.C: New testcase. diff --git a/gcc/testsuite/gcc.dg/torture/float128-extendxf-underflow.c b/gcc/testsuite/gcc.dg/torture/float128-extendxf-underflow.c new file mode 100644 index 0000000..228815d --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/float128-extendxf-underflow.c @@ -0,0 +1,40 @@ +/* Test that extension from XFmode to __float128 raises underflow for + exact tiny values, if trapping on underflow is enabled. */ + +/* { dg-do run { target i?86-*-*gnu* x86_64-*-*gnu* ia64-*-*gnu* } } */ +/* { dg-options "-D_GNU_SOURCE" } */ +/* { dg-require-effective-target fenv_exceptions } */ + +#include <fenv.h> +#include <setjmp.h> +#include <signal.h> +#include <stdlib.h> + +volatile sig_atomic_t caught_sigfpe; +sigjmp_buf buf; + +static void +handle_sigfpe (int sig) +{ + caught_sigfpe = 1; + siglongjmp (buf, 1); +} + +int +main (void) +{ + volatile long double a = 0x1p-16384L; + volatile __float128 r; + r = a; + if (fetestexcept (FE_UNDERFLOW)) + abort (); + if (r != 0x1p-16384q) + abort (); + feenableexcept (FE_UNDERFLOW); + signal (SIGFPE, handle_sigfpe); + if (sigsetjmp (buf, 1) == 0) + r = a; + if (!caught_sigfpe) + abort (); + exit (0); +} |