This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] Fix the C++ version of issignaling when __NO_LONG_DOUBLE_MATH is defined
- From: "Gabriel F. T. Gomes" <gftg at linux dot vnet dot ibm dot com>
- To: libc-alpha at sourceware dot org
- Cc: joseph at codesourcery dot com
- Date: Wed, 23 Aug 2017 12:28:17 -0300
- Subject: [PATCH] Fix the C++ version of issignaling when __NO_LONG_DOUBLE_MATH is defined
- Authentication-results: sourceware.org; auth=none
- References: <alpine.DEB.2.20.1708230040220.24571@digraph.polyomino.org.uk>
On Wed, 23 Aug 2017 00:41:23 +0000
Joseph Myers <joseph@codesourcery.com> wrote:
>This patch breaks building tests for long double = double configurations.
>__issignalingl does not exist in that case; the long double version of
>issignaling has to call __issignaling if __NO_LONG_DOUBLE_MATH is defined.
The following patch should fix this, however I do not have access to a
system where __NO_LONG_DOUBLE_MATH is defined. I'm building this with
build-many-glibcs.py, but that will take some time.
OK for master?
-- 8< --
When __NO_LONG_DOUBLE_MATH is defined, __issignalingl is not available,
thus issignaling with long double argument should call __issignaling,
instead.
Tested for powerpc64le.
* math/math.h [defined __cplusplus] (issignaling): In the long
double case, call __issignalingl only if __NO_LONG_DOUBLE_MATH
is not defined. Call __issignaling, otherwise.
---
math/math.h | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/math/math.h b/math/math.h
index b5d6c43fcf..5acbe88906 100644
--- a/math/math.h
+++ b/math/math.h
@@ -486,7 +486,15 @@ enum
extern "C++" {
inline int issignaling (float __val) { return __issignalingf (__val); }
inline int issignaling (double __val) { return __issignaling (__val); }
-inline int issignaling (long double __val) { return __issignalingl (__val); }
+inline int
+issignaling (long double __val)
+{
+# ifdef __NO_LONG_DOUBLE_MATH
+ return __issignaling (__val);
+# else
+ return __issignalingl (__val);
+# endif
+}
# if __HAVE_DISTINCT_FLOAT128
inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); }
# endif
--
2.13.5