aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-10-09 19:21:30 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2014-10-09 19:21:30 +0100
commit5f60643158669361212ef79bfec16e8c73f4c138 (patch)
tree77a4f889c3807e7f78e206208cc84647a983fe05 /gcc
parentc386686921f2eecb9f1a419def40b6b55732da98 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/torture/float128-extendxf-underflow.c40
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);
+}