public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: "Gabriel F. T. Gomes" <gabriel@inconstante.eti.br>
To: <libc-alpha@sourceware.org>
Subject: [PATCH v2 2/5] powerpc: Add redirection for finitef128, isinf128, and isnanf128
Date: Mon, 11 Sep 2017 01:17:00 -0000	[thread overview]
Message-ID: <20170911011654.28743-3-gabriel@inconstante.eti.br> (raw)
In-Reply-To: <20170911011654.28743-1-gabriel@inconstante.eti.br>

Changes since v1:

  - Added comments to explain the need to redefine __finitef, __finitel,
    and __finitef128 in s_finite.c.  Likewise for isinf and isnan.

-- 8< --
On powerpc64le, compiler support for float128 is not enabled by default
on gcc.  To enable it, the flag -mfloat128 must be passed as a command
line option to the compiler.  This means that only the few files that
actively have -mfloat128 passed as an argument get compiler support for
float128, whereas all other files don't.

When -mfloat128 becomes enabled by default on powerpc [1], all the files
that do not currently have compiler support for float128 enabled during
their compilation, will start to have it.  This will lead to build
errors in s_finite.c, s_isinf.c, and s_isnan.c.

The errors are due to the unintended macro expansion of __finitef128 to
__redirect_finitef128 in math/bits/mathcalls-helper-functions.h.  In
that header, __MATHDECL_1 takes '__finite' and 'f128' as arguments and
concatenates them, but '__finite' has been redefined in s_finite.c.
This effect was already true for the 'float' and 'long double' versions
and is now true for float128.  Likewise for isinsff128 and isnanf128.

This patch defines __finitef128 as __redirect___finitef128 in
sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c, similarly to what's
done for the float and long double versions of these functions, to get
rid of the build error.  Likewise for isinff128 and isnanf128.

[1] https://gcc.gnu.org/ml/gcc-patches/2017-08/msg01028.html

Tested for powerpc64 and powerpc64le.

	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
	(__finitef128): Define to __redirect___finitef128.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
	(__isinff128): Define to __redirect___isinff128.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
	(__isnanf128): Define to __redirect___isnanf128.
---
 sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c | 7 +++++++
 sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c  | 7 +++++++
 sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c  | 7 +++++++
 3 files changed, 21 insertions(+)

diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
index a5ec36b72f..0382bfb95c 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
@@ -17,8 +17,15 @@
    <http://www.gnu.org/licenses/>.  */
 
 #define __finite __redirect___finite
+
+/* The following definitions, although not related to the 'double'
+   version of 'finite', are required to compensate for the unintended
+   macro expansion of __finitef to __redirect___finitef, etc. in
+   math/bits/mathcalls-helper-functions.h.  */
 #define __finitef __redirect___finitef
 #define __finitel __redirect___finitel
+#define __finitef128 __redirect___finitef128
+
 #include <math.h>
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
index 9c6789c7bd..43827557a3 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
@@ -17,8 +17,15 @@
    <http://www.gnu.org/licenses/>.  */
 
 #define __isinf __redirect___isinf
+
+/* The following definitions, although not related to the 'double'
+   version of 'isinf', are required to compensate for the unintended
+   macro expansion of __isinff to __redirect___isinff, etc. in
+   math/bits/mathcalls-helper-functions.h.  */
 #define __isinff __redirect___isinff
 #define __isinfl __redirect___isinfl
+#define __isinff128 __redirect___isinff128
+
 #include <math.h>
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
index 3cfe1793da..bbc59808a4 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
@@ -17,8 +17,15 @@
    <http://www.gnu.org/licenses/>.  */
 
 #define __isnan __redirect___isnan
+
+/* The following definitions, although not related to the 'double'
+   version of 'isnan', are required to compensate for the unintended
+   macro expansion of __isnanf to __redirect___isnanf, etc. in
+   math/bits/mathcalls-helper-functions.h.  */
 #define __isnanf __redirect___isnanf
 #define __isnanl __redirect___isnanl
+#define __isnanf128 __redirect___isnanf128
+
 #include <math.h>
 #include <math_ldbl_opt.h>
 #include <shlib-compat.h>
-- 
2.13.5

  parent reply	other threads:[~2017-09-11  1:17 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-11  1:17 [PATCH v2 0/5] Fixes for gcc enabling -mfloat128 by default Gabriel F. T. Gomes
2017-09-11  1:17 ` [PATCH v2 5/5] Remove conditional on LDBL_MANT_DIG from e_lgammal_r.c Gabriel F. T. Gomes
2017-09-11  1:17 ` [PATCH v2 3/5] ldbl-128ibm: Copy implementations from ldbl-128 instead of including them Gabriel F. T. Gomes
2017-09-11 14:41   ` Joseph Myers
2017-09-11  1:17 ` [PATCH v2 1/5] powerpc64le: Add -mfloat128 to tst-strtod-nan-locale testcase Gabriel F. T. Gomes
2017-09-11  1:17 ` Gabriel F. T. Gomes [this message]
2017-09-11  1:18 ` [PATCH v2 4/5] ldbl-128ibm: Automatic replacing of _Float128 and L() Gabriel F. T. Gomes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170911011654.28743-3-gabriel@inconstante.eti.br \
    --to=gabriel@inconstante.eti.br \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).