From 52aafee302d34ddd2afb6bea31d838e61555e154 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 10 Oct 2013 19:11:30 +0000 Subject: [PATCH] Avoid ordered comparisons of NaNs in ldbl-128ibm acosl and asinl. --- ChangeLog | 7 +++++++ sysdeps/ieee754/ldbl-128ibm/e_acosl.c | 2 ++ sysdeps/ieee754/ldbl-128ibm/e_asinl.c | 2 ++ 3 files changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index bf099c9cfa5..b970fe10017 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-10-10 Joseph Myers + + * sysdeps/ieee754/ldbl-128ibm/e_acosl.c (__ieee754_acosl): Check + for NaNs before doing comparisons on argument. + * sysdeps/ieee754/ldbl-128ibm/e_asinl.c (__ieee754_asinl): + Likewise. + 2013-10-04 Alan Modra * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela): diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c index 86639930c96..2cb288238b1 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c @@ -153,6 +153,8 @@ __ieee754_acosl (long double x) { long double a, z, r, w, p, q, s, t, f2; + if (__glibc_unlikely (__isnanl (x))) + return x + x; a = __builtin_fabsl (x); if (a == 1.0L) { diff --git a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c index 99a5b85fa02..dece11875b3 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c @@ -134,6 +134,8 @@ __ieee754_asinl (long double x) long double a, t, w, p, q, c, r, s; int flag; + if (__glibc_unlikely (__isnanl (x))) + return x + x; flag = 0; a = __builtin_fabsl (x); if (a == 1.0L) /* |x|>= 1 */ -- 2.47.2