mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 14:20:07 +00:00
Do not use __builtin_types_compatible_p in C++ mode (bug 21930)
The logic to define isinf for float128 depends on the availability of __builtin_types_compatible_p, which is only available in C mode, however, the conditionals do not check for C or C++ mode. This lead to an error in libstdc++ configure, as reported by bug 21930. This patch adds a conditional for C mode in the definition of isinf for float128. No definition is provided in C++ mode, since libstdc++ headers undefine isinf. Tested for powerpc64le (glibc test suite and libstdc++-v3 configure). [BZ #21930] * math/math.h (isinf): Check if in C or C++ mode before using __builtin_types_compatible_p, since this is a C mode feature.
This commit is contained in:
parent
c647fb885c
commit
47a67213a9
@ -1,3 +1,9 @@
|
||||
2017-08-18 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
|
||||
|
||||
[BZ #21930]
|
||||
* math/math.h (isinf): Check if in C or C++ mode before using
|
||||
__builtin_types_compatible_p, since this is a C mode feature.
|
||||
|
||||
2017-08-18 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
|
||||
* sysdeps/generic/not-cancel.h (write_not_cancel): Remove macro.
|
||||
|
@ -442,8 +442,12 @@ enum
|
||||
|
||||
/* Return nonzero value if X is positive or negative infinity. */
|
||||
# if __HAVE_DISTINCT_FLOAT128 && !__GNUC_PREREQ (7,0) \
|
||||
&& !defined __SUPPORT_SNAN__
|
||||
/* __builtin_isinf_sign is broken for float128 only before GCC 7.0. */
|
||||
&& !defined __SUPPORT_SNAN__ && !defined __cplusplus
|
||||
/* Since __builtin_isinf_sign is broken for float128 before GCC 7.0,
|
||||
use the helper function, __isinff128, with older compilers. This is
|
||||
only provided for C mode, because in C++ mode, GCC has no support
|
||||
for __builtin_types_compatible_p (and when in C++ mode, this macro is
|
||||
not used anyway, because libstdc++ headers undefine it). */
|
||||
# define isinf(x) \
|
||||
(__builtin_types_compatible_p (__typeof (x), _Float128) \
|
||||
? __isinff128 (x) : __builtin_isinf_sign (x))
|
||||
|
Loading…
Reference in New Issue
Block a user