public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jonathan Wakely <jwakely@redhat.com>
To: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
Cc: libstdc++ <libstdc++@gcc.gnu.org>,
	gcc-patches <gcc-patches@gcc.gnu.org>,
	wschmidt@linux.vnet.ibm.com,
	Segher Boessenkool <segher@kernel.crashing.org>,
	John David Anglin <danglin@gcc.gnu.org>,
	Marc Glisse <marc.glisse@inria.fr>
Subject: Re: [PATCHv2] PR libstdc++/84654 Do not use __float128 if it is disabled by the compiler
Date: Mon, 07 May 2018 20:03:00 -0000	[thread overview]
Message-ID: <20180507200259.GN20930@redhat.com> (raw)
In-Reply-To: <20180501143431.GA6267@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 1244 bytes --]

On 01/05/18 15:34 +0100, Jonathan Wakely wrote:
>On 12/03/18 16:02 -0300, Tulio Magno Quites Machado Filho wrote:
>>Changes since v1:
>>- Completely rewrite of the patch to set ENABLE_FLOAT128 at libstdc++
>>  build time and undef _GLIBCXX_USE_FLOAT128 when building user code.
>>
>>--- 8< ---
>>
>>In order to use __float128 in C++ it's necessary to check if the
>>compiler enabled its support too when building user code.
>>This patch changes the behavior at libstdc++ build by setting
>>ENABLE_FLOAT128, which is used to set the value of the exported macro
>>_GLIBCXX_USE_FLOAT128.
>
>Now that we're in stage 1 we can make this change. The patch looks
>right so I'll go ahead and commit it to trunk (it shouldn't interfere
>with testing any last-minute fixes needed for gcc-8).
>
>Thanks for fixing this, Tulio.

Previously _GLIBCXX_USE_FLOAT128 would either be defined to 1 or
undefined, but after this change it can be defined to 0, and the
checks in <type_traits> and <bits/std_abs.h> were not adjusted to
account for that.

This patch restores the previous behaviour, so that when __float128
support is not found by configure the macro will be undefined instead
of defined to 0.

I plan to commit this tomorrow after some more testing.


[-- Attachment #2: patch.txt --]
[-- Type: text/x-patch, Size: 2471 bytes --]

commit aed5af13903fa21632919269c9e7f7c4e02e8887
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon May 7 20:46:21 2018 +0100

    PR libstdc++/85672 #undef _GLIBCXX_USE_FLOAT128 when not supported
    
    Restore the behaviour in GCC 8 and earlier where _GLIBCXX_USE_FLOAT128
    is not defined when configure detects support is missing. This avoids
    having three states where the macro is either 1, 0, or undefined.
    
            PR libstdc++/85672
            * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
            to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
            * include/Makefile.in: Regenerate.
            * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
            within conditional block.

diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index ba5adda95bd..77e6dc2f6be 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -1232,10 +1232,10 @@ endif
 
 if ENABLE_FLOAT128
 stamp-float128:
-	echo 1 > stamp-float128
+	echo 'define _GLIBCXX_USE_FLOAT128 1' > stamp-float128
 else
 stamp-float128:
-	echo 0 > stamp-float128
+	echo 'undef _GLIBCXX_USE_FLOAT128' > stamp-float128
 endif
 
 # NB: The non-empty default ldbl_compat works around an AIX sed
@@ -1272,7 +1272,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
 	-e "s,define _GLIBCXX_USE_DUAL_ABI, define _GLIBCXX_USE_DUAL_ABI $$dualabi," \
 	-e "s,define _GLIBCXX_USE_CXX11_ABI, define _GLIBCXX_USE_CXX11_ABI $$cxx11abi," \
 	-e "s,define _GLIBCXX_USE_ALLOCATOR_NEW, define _GLIBCXX_USE_ALLOCATOR_NEW $$allocatornew," \
-	-e "s,define _GLIBCXX_USE_FLOAT128, define _GLIBCXX_USE_FLOAT128 $$float128," \
+	-e "s,define _GLIBCXX_USE_FLOAT128,$$float128," \
 	-e "$$ldbl_compat" \
 	    < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
 	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index e34524117d6..bfe268da825 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -610,9 +610,8 @@ namespace std
 #endif
 
 /* Define if __float128 is supported on this host. */
+#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__)
 #define _GLIBCXX_USE_FLOAT128
-#if !defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)
-#undef _GLIBCXX_USE_FLOAT128
 #endif
 
 // End of prewritten config; the settings discovered at configure time follow.

  reply	other threads:[~2018-05-07 20:03 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-01 18:47 [PATCH] " Tulio Magno Quites Machado Filho
2018-03-01 18:54 ` Marc Glisse
2018-03-01 22:04   ` Jonathan Wakely
2018-03-12 19:02     ` [PATCHv2] " Tulio Magno Quites Machado Filho
2018-03-26 15:23       ` Tulio Magno Quites Machado Filho
2018-05-01 14:34       ` Jonathan Wakely
2018-05-07 20:03         ` Jonathan Wakely [this message]
2018-03-01 19:10 ` [PATCH] " Jakub Jelinek
2018-03-01 20:52   ` Jakub Jelinek
2018-03-01 20:56     ` Marc Glisse

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=20180507200259.GN20930@redhat.com \
    --to=jwakely@redhat.com \
    --cc=danglin@gcc.gnu.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=libstdc++@gcc.gnu.org \
    --cc=marc.glisse@inria.fr \
    --cc=segher@kernel.crashing.org \
    --cc=tuliom@linux.vnet.ibm.com \
    --cc=wschmidt@linux.vnet.ibm.com \
    /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).