diff options
author | Gabriel F. T. Gomes <gabriel@inconstante.eti.br> | 2017-11-03 10:44:36 -0200 |
---|---|---|
committer | Gabriel F. T. Gomes <gabriel@inconstante.eti.br> | 2017-12-19 23:26:59 -0200 |
commit | c85e54ac6cef0faed7b7ffc722f52523dec59bf5 (patch) | |
tree | 594a7a95e759e7035ee80ea0dee46b09f917f9aa /ChangeLog | |
parent | 10e93d968716ab82931d593bada121c17c0a4b93 (diff) | |
download | glibc-c85e54ac6cef0faed7b7ffc722f52523dec59bf5.tar glibc-c85e54ac6cef0faed7b7ffc722f52523dec59bf5.tar.gz glibc-c85e54ac6cef0faed7b7ffc722f52523dec59bf5.tar.bz2 glibc-c85e54ac6cef0faed7b7ffc722f52523dec59bf5.zip |
Provide a C++ version of iseqsig (bug 22377)
In C++ mode, __MATH_TG cannot be used for defining iseqsig, because
__MATH_TG relies on __builtin_types_compatible_p, which is a C-only
builtin. This is true when float128 is provided as an ABI-distinct type
from long double.
Moreover, the comparison macros from ISO C take two floating-point
arguments, which need not have the same type. Choosing what underlying
function to call requires evaluating the formats of the arguments, then
selecting which is wider. The macro __MATH_EVAL_FMT2 provides this
information, however, only the type of the macro expansion is relevant
(actually evaluating the expression would be incorrect).
This patch provides a C++ version of iseqsig, in which only the type of
__MATH_EVAL_FMT2 (__typeof or decltype) is used as a template parameter
for __iseqsig_type. This function calls the appropriate underlying
function.
Tested for powerpc64le and x86_64.
[BZ #22377]
* math/Makefile [C++] (tests): Add test for iseqsig.
* math/math.h [C++] (iseqsig): New implementation, which does
not rely on __MATH_TG/__builtin_types_compatible_p.
* math/test-math-iseqsig.cc: New file.
* sysdeps/powerpc/powerpc64le/Makefile
(CFLAGS-test-math-iseqsig.cc): New variable.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -1,3 +1,13 @@ +2017-12-19 Gabriel F. T. Gomes <gabriel@inconstante.eti.br> + + [BZ #22377] + * math/Makefile [C++] (tests): Add test for iseqsig. + * math/math.h [C++] (iseqsig): New implementation, which does + not rely on __MATH_TG/__builtin_types_compatible_p. + * math/test-math-iseqsig.cc: New file. + * sysdeps/powerpc/powerpc64le/Makefile + (CFLAGS-test-math-iseqsig.cc): New variable. + 2017-12-19 Dmitry V. Levin <ldv@altlinux.org> * elf/dl-load.c (is_trusted_path): Remove. |