From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 87536 invoked by alias); 12 Mar 2018 19:02:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 87493 invoked by uid 89); 12 Mar 2018 19:02:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=unavailable version=3.3.2 spammy=__float128, 60910, filho X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0a-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.156.1) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 12 Mar 2018 19:02:50 +0000 Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w2CJ0Lop064556 for ; Mon, 12 Mar 2018 15:02:48 -0400 Received: from e16.ny.us.ibm.com (e16.ny.us.ibm.com [129.33.205.206]) by mx0a-001b2d01.pphosted.com with ESMTP id 2gnuh0abf7-1 (version=TLSv1.2 cipher=AES256-SHA256 bits=256 verify=NOT) for ; Mon, 12 Mar 2018 15:02:48 -0400 Received: from localhost by e16.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 12 Mar 2018 15:02:46 -0400 Received: from b01cxnp23034.gho.pok.ibm.com (9.57.198.29) by e16.ny.us.ibm.com (146.89.104.203) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 12 Mar 2018 15:02:44 -0400 Received: from b01ledav006.gho.pok.ibm.com (b01ledav006.gho.pok.ibm.com [9.57.199.111]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w2CJ2hd641943238; Mon, 12 Mar 2018 19:02:43 GMT Received: from b01ledav006.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E0C3CAC03A; Mon, 12 Mar 2018 15:03:58 -0400 (EDT) Received: from shinano (unknown [9.18.239.29]) by b01ledav006.gho.pok.ibm.com (Postfix) with SMTP id 1375FAC040; Mon, 12 Mar 2018 15:03:56 -0400 (EDT) Received: by shinano (sSMTP sendmail emulation); Mon, 12 Mar 2018 16:02:40 -0300 From: "Tulio Magno Quites Machado Filho" To: Jonathan Wakely , libstdc++ Cc: gcc-patches , wschmidt@linux.vnet.ibm.com, Segher Boessenkool Subject: [PATCHv2] PR libstdc++/84654 Do not use __float128 if it is disabled by the compiler Date: Mon, 12 Mar 2018 19:02:00 -0000 In-Reply-To: References: X-TM-AS-GCONF: 00 x-cbid: 18031219-0024-0000-0000-0000033543AF X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00008661; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000254; SDB=6.01002082; UDB=6.00509859; IPR=6.00781412; MB=3.00019994; MTD=3.00000008; XFM=3.00000015; UTC=2018-03-12 19:02:46 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18031219-0025-0000-0000-0000474DA5B9 Message-Id: <20180312190224.19137-1-tuliom@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-03-12_11:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=9 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1803120211 X-IsSubscribed: yes X-SW-Source: 2018-03/txt/msg00543.txt.bz2 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. 2018-03-12 Tulio Magno Quites Machado Filho PR libstdc++/84654 * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128. * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128. * configure: Regenerate. * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128 based on ENABLE_FLOAT128. * include/Makefile.in: Regenerate. * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128. [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine _GLIBCXX_USE_FLOAT128. --- libstdc++-v3/acinclude.m4 | 5 ++--- libstdc++-v3/config.h.in | 3 --- libstdc++-v3/include/Makefile.am | 13 ++++++++++++- libstdc++-v3/include/bits/c++config | 6 ++++++ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 3bd669a..4f37b6a 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3062,7 +3062,7 @@ dnl Note: also checks that the types aren't standard types. dnl dnl Defines: dnl _GLIBCXX_USE_INT128 -dnl _GLIBCXX_USE_FLOAT128 +dnl ENABLE_FLOAT128 dnl AC_DEFUN([GLIBCXX_ENABLE_INT128_FLOAT128], [ @@ -3117,13 +3117,12 @@ EOF AC_MSG_CHECKING([for __float128]) if AC_TRY_EVAL(ac_compile); then - AC_DEFINE(_GLIBCXX_USE_FLOAT128, 1, - [Define if __float128 is supported on this host.]) enable_float128=yes else enable_float128=no fi AC_MSG_RESULT($enable_float128) + GLIBCXX_CONDITIONAL(ENABLE_FLOAT128, test $enable_float128 = yes) rm -f conftest* AC_LANG_RESTORE diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index 5a0f067..765cedc 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -918,9 +918,6 @@ /* Define if fchmodat is available in . */ #undef _GLIBCXX_USE_FCHMODAT -/* Define if __float128 is supported on this host. */ -#undef _GLIBCXX_USE_FLOAT128 - /* Defined if gettimeofday is available. */ #undef _GLIBCXX_USE_GETTIMEOFDAY diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index 70a662f..ba5adda 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -1230,6 +1230,14 @@ stamp-allocator-new: echo 0 > stamp-allocator-new endif +if ENABLE_FLOAT128 +stamp-float128: + echo 1 > stamp-float128 +else +stamp-float128: + echo 0 > stamp-float128 +endif + # NB: The non-empty default ldbl_compat works around an AIX sed # oddity, see libstdc++/31957 for details. ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ @@ -1241,7 +1249,8 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ stamp-extern-template \ stamp-dual-abi \ stamp-cxx11-abi \ - stamp-allocator-new + stamp-allocator-new \ + stamp-float128 @date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\ release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\ ns_version=`cat stamp-namespace-version` ;\ @@ -1250,6 +1259,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ dualabi=`cat stamp-dual-abi` ;\ cxx11abi=`cat stamp-cxx11-abi` ;\ allocatornew=`cat stamp-allocator-new` ;\ + float128=`cat stamp-float128` ;\ ldbl_compat='s,g,g,' ;\ grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \ ${CONFIG_HEADER} > /dev/null 2>&1 \ @@ -1262,6 +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 "$$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 1eb4679..e345241 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -609,4 +609,10 @@ namespace std # endif #endif +/* Define if __float128 is supported on this host. */ +#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. -- 2.9.5