From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1005) id 52DCC3851C21; Mon, 30 Nov 2020 23:30:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 52DCC3851C21 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Michael Meissner To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc(refs/users/meissner/heads/work029)] Undo libstdc++ changes. X-Act-Checkin: gcc X-Git-Author: Michael Meissner X-Git-Refname: refs/users/meissner/heads/work029 X-Git-Oldrev: 16c4af331f787af36fb9d1d17b975e034355a68e X-Git-Newrev: 0b3e6126b880a7658adabd94eba79c2fcbc38b89 Message-Id: <20201130233033.52DCC3851C21@sourceware.org> Date: Mon, 30 Nov 2020 23:30:33 +0000 (GMT) X-BeenThere: libstdc++-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Nov 2020 23:30:33 -0000 https://gcc.gnu.org/g:0b3e6126b880a7658adabd94eba79c2fcbc38b89 commit 0b3e6126b880a7658adabd94eba79c2fcbc38b89 Author: Michael Meissner Date: Mon Nov 30 18:28:25 2020 -0500 Undo libstdc++ changes. 2020-11-11 Jonathan Wakely Undo changes. * config.h.in: Regenerate. * config/abi/pre/gnu.ver: Make patterns less greedy. Add CXXABI_1.3.12 symbol version. * config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns for IEEE128 long double symbols. * configure: Regenerate. * configure.ac: Enable alternative 128-bit long double format on powerpc64*-*-linux*. * doc/Makefile.in: Regenerate. * fragment.am: Regenerate. * include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT. * include/Makefile.in: Regenerate. * include/bits/c++config: Define inline namespace for new long double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the same type as long double. * include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (locale::_Impl::_M_init_extra_ldbl128): Declare new member function. * include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by only counting narrow character facets. (_GLIBCXX_NUM_CXX11_FACETS): Likewise. (_GLIBCXX_NUM_LBDL_ALT128_FACETS): New. [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define vtable placeholder for __ibm128 long double type. [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (num_get::__do_get): Declare vtable placeholder for __ibm128 long double type. [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (num_put::__do_put): Likewise. * include/bits/locale_facets.tcc [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (num_get::__do_get, num_put::__do_put): Define. * include/bits/locale_facets_nonio.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (money_get::__do_get): Declare vtable placeholder for __ibm128 long double type. [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (money_put::__do_put): Likewise. * include/bits/locale_facets_nonio.tcc [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (money_get::__do_get, money_put::__do_put): Define. * libsupc++/Makefile.in: Regenerate. * po/Makefile.in: Regenerate. * python/Makefile.in: Regenerate. * src/Makefile.am: Add compatibility-ldbl-alt128.cc and compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects. * src/Makefile.in: Regenerate. * src/c++11/Makefile.in: Regenerate. * src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining symbols using the old 128-bit long double format, for the cxx11 ABI. * src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the gcc4-compatible ABI. * src/c++11/compatibility-ldbl-facets-aliases.h: New header for long double compat aliases. * src/c++11/cow-locale_init.cc: Add comment. * src/c++11/cxx11-locale-inst.cc: Define C and C_is_char unconditionally. * src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include locale-inst.cc directly, not via cxx11-locale-inst.cc. * src/c++11/locale-inst-monetary.h: New header for monetary category instantiations. * src/c++11/locale-inst-numeric.h: New header for numeric category instantiations. * src/c++11/locale-inst.cc: Include new headers for monetary, numeric, and long double definitions. * src/c++11/wlocale-inst.cc: Remove long double compat aliases that are defined in new header now. * src/c++17/Makefile.in: Regenerate. * src/c++98/Makefile.in: Regenerate. * src/c++98/locale_init.cc (num_facets): Adjust calculation. (locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128. * src/c++98/localename.cc (num_facets): Adjust calculation. (locale::_Impl::_Impl(const char*, size_t)): Call _M_init_extra_ldbl128. * src/filesystem/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. * testsuite/util/testsuite_abi.cc: Add new symbol versions. Diff: --- libstdc++-v3/config/abi/pre/gnu.ver | 8 +- .../config/os/gnu-linux/ldbl-ieee128-extra.ver | 51 ----- libstdc++-v3/configure.ac | 35 +-- libstdc++-v3/fragment.am | 8 +- libstdc++-v3/include/Makefile.am | 6 - libstdc++-v3/include/bits/c++config | 32 +-- libstdc++-v3/include/bits/locale_classes.h | 4 - libstdc++-v3/include/bits/locale_facets.h | 28 --- libstdc++-v3/include/bits/locale_facets.tcc | 27 --- libstdc++-v3/include/bits/locale_facets_nonio.h | 24 +-- libstdc++-v3/include/bits/locale_facets_nonio.tcc | 61 +----- libstdc++-v3/src/Makefile.am | 32 +-- .../src/c++11/compatibility-ldbl-alt128-cxx11.cc | 102 --------- .../src/c++11/compatibility-ldbl-alt128.cc | 234 --------------------- .../src/c++11/compatibility-ldbl-facets-aliases.h | 128 ----------- libstdc++-v3/src/c++11/cow-locale_init.cc | 1 - libstdc++-v3/src/c++11/cxx11-locale-inst.cc | 6 +- libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc | 8 +- libstdc++-v3/src/c++11/locale-inst-monetary.h | 69 ------ libstdc++-v3/src/c++11/locale-inst-numeric.h | 133 ------------ libstdc++-v3/src/c++11/locale-inst.cc | 200 +++++++++++++++++- libstdc++-v3/src/c++11/wlocale-inst.cc | 45 +++- libstdc++-v3/src/c++98/locale_init.cc | 17 +- libstdc++-v3/src/c++98/localename.cc | 16 +- libstdc++-v3/testsuite/util/testsuite_abi.cc | 18 +- 25 files changed, 264 insertions(+), 1029 deletions(-) diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index f2c88cbce2d..46769db1530 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -682,7 +682,7 @@ GLIBCXX_3.4 { _ZNSt12__basic_fileIcED*; # std::__convert_to_v - _ZSt14__convert_to_vI[^gU]*; + _ZSt14__convert_to_vI[^g]*; # __gnu_cxx::stdio_sync_filebuf _ZTVN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE; @@ -931,7 +931,7 @@ GLIBCXX_3.4 { _ZGVNSt8time_putI[cw]*; _ZGVNSt9money_getI[cw]*; _ZGVNSt9money_putI[cw]*; - _ZGVNSt1[^079]*; + _ZGVNSt1[^07]*; _ZGVNSt10moneypunctI[cw]Lb[01]*; # exception constructors taking std::string @@ -2702,10 +2702,6 @@ CXXABI_1.3.13 { } CXXABI_1.3.12; -CXXABI_1.3.12 { - -} CXXABI_1.3.11; - # Symbols in the support library (libsupc++) supporting transactional memory. CXXABI_TM_1 { diff --git a/libstdc++-v3/config/os/gnu-linux/ldbl-ieee128-extra.ver b/libstdc++-v3/config/os/gnu-linux/ldbl-ieee128-extra.ver deleted file mode 100644 index dca371b11f0..00000000000 --- a/libstdc++-v3/config/os/gnu-linux/ldbl-ieee128-extra.ver +++ /dev/null @@ -1,51 +0,0 @@ -# Appended to version file. - -GLIBCXX_IEEE128_3.4.26 { - - *__gnu_cxx_ieee128*; - - _ZNSt14numeric_limitsIu9__ieee128E*; - _ZNSirsERu9__ieee128; - _ZNSolsEu9__ieee128; - _ZNSt13basic_istreamIwSt11char_traitsIwEErsERu9__ieee128; - _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEu9__ieee128; - _ZSt14__convert_to_vIu9__ieee128EvPKcRT_RSt12_Ios_IostateRKP*; - _ZStlsIu9__ieee128[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E; - _ZStrsIu9__ieee128[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E; - - _ZNSi10_M_extractIu9__ieee128EERSiRT_; - _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIu9__ieee128EERS2_RT_; - _ZNSo9_M_insertIu9__ieee128EERSoT_; - _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIu9__ieee128EERS2_T_; - - _ZNKSt3tr14hashIu9__ieee128EclEu9__ieee128; - _ZNKSt4hashIu9__ieee128EclEu9__ieee128; - - _ZNKSt19__gnu_cxx11_ieee1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNSt7__cxx1112basic_stringIcS3_SaIcEEE; - _ZNKSt19__gnu_cxx11_ieee1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRu9__ieee128; - _ZNKSt19__gnu_cxx11_ieee1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd; - _ZNKSt19__gnu_cxx11_ieee1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg; - _ZNKSt19__gnu_cxx11_ieee1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKNSt7__cxx1112basic_stringIcS3_SaIcEEE; - _ZNKSt19__gnu_cxx11_ieee1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecu9__ieee128; - _ZNKSt19__gnu_cxx11_ieee1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd; - _ZNKSt19__gnu_cxx11_ieee1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecg; - _ZSt9has_facetINSt19__gnu_cxx11_ieee1289money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEEEEbRKSt6locale; - _ZSt9has_facetINSt19__gnu_cxx11_ieee1289money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEEEEbRKSt6locale; - _ZSt9use_facetINSt19__gnu_cxx11_ieee1289money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEEEERKT_RKSt6locale; - _ZSt9use_facetINSt19__gnu_cxx11_ieee1289money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEEEERKT_RKSt6locale; - _ZTINSt19__gnu_cxx11_ieee1289money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEEE; - _ZTVNSt19__gnu_cxx11_ieee1289money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEEE; - _ZTINSt19__gnu_cxx11_ieee1289money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEEE; - _ZTVNSt19__gnu_cxx11_ieee1289money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEEE; - - _ZNKSt19__gnu_cxx11_ieee1289money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE3putES4_bRSt8ios_base[cw]u9__ieee128; - -} GLIBCXX_3.4.26; - -CXXABI_IEEE128_1.3.12 { - - _ZT[IS]u9__ieee128; - _ZT[IS]Pu9__ieee128; - _ZT[IS]PKu9__ieee128; - -} CXXABI_1.3.12; diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index 9d5b9b33ce9..cbfdf4c6bad 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -404,11 +404,7 @@ GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI([yes]) GLIBCXX_DEFAULT_ABI ac_ldbl_compat=no -ac_ldbl_alt128_compat=no -ac_ldbl_ieee128_default=no LONG_DOUBLE_COMPAT_FLAGS="-mlong-double-64" -LONG_DOUBLE_128_FLAGS= -LONG_DOUBLE_ALT128_COMPAT_FLAGS= case "$target" in powerpc*-*-linux* | \ sparc*-*-linux* | \ @@ -425,41 +421,12 @@ case "$target" in port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver" case "$target" in powerpc*-*-linux*) - LONG_DOUBLE_COMPAT_FLAGS="$LONG_DOUBLE_COMPAT_FLAGS -mno-gnu-attribute" - # Check for IEEE128 support in libc: - AC_CHECK_FUNCS(frexpf128, - [ac_ldbl_ieee128_in_libc=yes], - [ac_ldbl_ieee128_in_libc=no]) - if test $ac_ldbl_ieee128_in_libc = yes; then - # Determine which long double format is the compiler's default: - AC_TRY_COMPILE(, [ - #ifndef __LONG_DOUBLE_IEEE128__ - #error compiler defaults to ibm128 - #endif - ], [ac_ldbl_ieee128_default=yes], [ac_ldbl_ieee128_default=no]) - # Library objects should use IEEE128 long double format by default. - if test "$ac_ldbl_ieee128_default" = no; then - # Add -mabi=ieeelongdouble to ensire that. - LONG_DOUBLE_128_FLAGS="-mabi=ieeelongdouble -mno-gnu-attribute -Wno-psabi" - fi - # Except for the ones that explicitly use these flags: - LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ibmlongdouble -mno-gnu-attribute -Wno-psabi" - AC_DEFINE([_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT],1, - [Define if compatibility should be provided for alternative 128-bit long double formats.]) - port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/os/gnu-linux/ldbl-ieee128-extra.ver" - ac_ldbl_alt128_compat=yes - else - ac_ldbl_alt128_compat=no - fi - ;; + LONG_DOUBLE_COMPAT_FLAGS="$LONG_DOUBLE_COMPAT_FLAGS -mno-gnu-attribute" ;; esac fi esac AC_SUBST(LONG_DOUBLE_COMPAT_FLAGS) -AC_SUBST(LONG_DOUBLE_128_FLAGS) -AC_SUBST(LONG_DOUBLE_ALT128_COMPAT_FLAGS) GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes) -GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_ALT128_COMPAT, test $ac_ldbl_alt128_compat = yes) # Check if assembler supports disabling hardware capability support. GCC_CHECK_ASSEMBLER_HWCAP diff --git a/libstdc++-v3/fragment.am b/libstdc++-v3/fragment.am index 54645739e5c..216c572fc60 100644 --- a/libstdc++-v3/fragment.am +++ b/libstdc++-v3/fragment.am @@ -25,16 +25,10 @@ else XTEMPLATE_FLAGS = endif -if GLIBCXX_LDBL_ALT128_COMPAT -LDBL_128_FLAGS = $(LONG_DOUBLE_128_FLAGS) -else -LDBL_128_FLAGS = -endif - # These bits are all figured out from configure. Look in acinclude.m4 # or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS. CONFIG_CXXFLAGS = \ - $(SECTION_FLAGS) $(HWCAP_CFLAGS) -frandom-seed=$@ $(LDBL_128_FLAGS) + $(SECTION_FLAGS) $(HWCAP_CFLAGS) -frandom-seed=$@ WARN_CXXFLAGS = \ $(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index 5bd61bea6e3..ca413b8fdfe 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -1293,10 +1293,6 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \ ${CONFIG_HEADER} > /dev/null 2>&1 \ && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\ - ldbl_alt128_compat='s,g,g,' ;\ - grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT[ ][ ]*1[ ]*$$" \ - ${CONFIG_HEADER} > /dev/null 2>&1 \ - && ldbl_alt128_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT 1,' ;\ sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \ -e "s,define _GLIBCXX_RELEASE,define _GLIBCXX_RELEASE $$release," \ -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \ @@ -1307,7 +1303,6 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ -e "s,define _GLIBCXX_USE_ALLOCATOR_NEW, define _GLIBCXX_USE_ALLOCATOR_NEW $$allocatornew," \ -e "s,define _GLIBCXX_USE_FLOAT128,$$float128," \ -e "$$ldbl_compat" \ - -e "$$ldbl_alt128_compat" \ < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \ @@ -1318,7 +1313,6 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \ -e 's/_LARGE_FILES/_GLIBCXX_LARGE_FILES/g' \ -e 's/ICONV_CONST/_GLIBCXX_ICONV_CONST/g' \ -e '/[ ]_GLIBCXX_LONG_DOUBLE_COMPAT[ ]/d' \ - -e '/[ ]_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT[ ]/d' \ < ${CONFIG_HEADER} >> $@ ;\ echo "" >> $@ ;\ echo "#endif // _GLIBCXX_CXX_CONFIG_H" >> $@ diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index 6af203d03ec..2e6c880ad95 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -425,28 +425,8 @@ _GLIBCXX_END_NAMESPACE_VERSION // GLIBCXX_ABI Deprecated // Define if compatibility should be provided for -mlong-double-64. #undef _GLIBCXX_LONG_DOUBLE_COMPAT -// Define if compatibility should be provided for alternative 128-bit long -// double formats. -#undef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - -// Inline namespaces for long double 128 modes. -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ -namespace std -{ - // Namespaces for 128-bit IEEE long double format on 64-bit POWER LE. - inline namespace __gnu_cxx_ieee128 { } - inline namespace __gnu_cxx11_ieee128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ieee128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ieee128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 __gnu_cxx11_ieee128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 namespace __gnu_cxx11_ieee128 { -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 } - -#else // _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && IEEE128 +// Inline namespace for long double 128 mode. #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ namespace std { @@ -460,7 +440,6 @@ namespace std # define _GLIBCXX_BEGIN_NAMESPACE_LDBL # define _GLIBCXX_END_NAMESPACE_LDBL #endif - #if _GLIBCXX_USE_CXX11_ABI # define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 # define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 @@ -471,8 +450,6 @@ namespace std # define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_LDBL #endif -#endif // _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && IEEE128 - // Debug Mode implies checking assertions. #if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) # define _GLIBCXX_ASSERTIONS 1 @@ -671,12 +648,9 @@ namespace std # define __cpp_lib_char8_t 201907L #endif -/* Define if __float128 is supported on this host. */ +/* Define if __float128 is supported on this host. */ #if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) -/* For powerpc64 don't use __float128 when it's the same type as long double. */ -# if !(defined(_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT) && defined(__LONG_DOUBLE_IEEE128__)) -# define _GLIBCXX_USE_FLOAT128 -# endif +#define _GLIBCXX_USE_FLOAT128 #endif #if __GNUC__ >= 7 diff --git a/libstdc++-v3/include/bits/locale_classes.h b/libstdc++-v3/include/bits/locale_classes.h index ed7764e06e7..ab90682cde2 100644 --- a/libstdc++-v3/include/bits/locale_classes.h +++ b/libstdc++-v3/include/bits/locale_classes.h @@ -625,10 +625,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void _M_init_extra(facet**); void _M_init_extra(void*, void*, const char*, const char*); - -#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - void _M_init_extra_ldbl128(bool); -#endif }; diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h index 9b262c2d228..3e0ae8776c9 100644 --- a/libstdc++-v3/include/bits/locale_facets.h +++ b/libstdc++-v3/include/bits/locale_facets.h @@ -65,10 +65,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION # define _GLIBCXX_NUM_UNICODE_FACETS 2 #endif -// Facets duplicated for alt128 long double format -// num_get, num_put, money_get, money_put (+ cxx11 money_get, money_put) -#define _GLIBCXX_NUM_LBDL_ALT128_FACETS (4 + (_GLIBCXX_USE_DUAL_ABI ? 2 : 0)) - // Convert string to numeric value of type _Tp and store results. // NB: This is specialized for all required types, there is no // generic definition. @@ -2256,10 +2252,6 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL // XXX GLIBCXX_ABI Deprecated #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ - // For __gnu_cxx_ldbl128::num_get and __gnu_cxx_ieee128::num_get - // this entry in the vtable is for a 64-bit "long double" with the - // same format as double. This keeps the vtable layout consistent - // with std::num_get (visible when -mlong-double-64 is used). virtual iter_type __do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, double&) const; @@ -2272,21 +2264,8 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; - // XXX GLIBCXX_ABI Deprecated -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ - // For __gnu_cxx_ieee128::num_get this entry in the vtable is for - // the non-IEEE 128-bit "long double" (aka "double double"). This - // is consistent with __gnu_cxx_ldbl128::num_get (-mabi=ibmlongdouble) - virtual iter_type - __do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, - __ibm128&) const; -#endif - // XXX GLIBCXX_ABI Deprecated #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ - // For __gnu_cxx_ldbl128::num_get and __gnu_cxx_ieee128::num_get - // this entry in the vtable is for the 128-bit "long double" type. virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long double&) const; @@ -2566,13 +2545,6 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL virtual iter_type do_put(iter_type, ios_base&, char_type, const void*) const; - // XXX GLIBCXX_ABI Deprecated -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ - virtual iter_type - __do_put(iter_type, ios_base&, char_type, __ibm128) const; -#endif - // XXX GLIBCXX_ABI Deprecated #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ virtual iter_type diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index 4fdca180a87..ebc993339a6 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -772,24 +772,6 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL return __beg; } -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ - template - _InIter - num_get<_CharT, _InIter>:: - __do_get(iter_type __beg, iter_type __end, ios_base& __io, - ios_base::iostate& __err, __ibm128& __v) const - { - string __xtrc; - __xtrc.reserve(32); - __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); - std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); - if (__beg == __end) - __err |= ios_base::eofbit; - return __beg; - } -#endif - // For use by integer and floating-point types after they have been // converted into a char_type string. template @@ -1212,15 +1194,6 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL return __s; } -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ - template - _OutIter - num_put<_CharT, _OutIter>:: - __do_put(iter_type __s, ios_base& __io, char_type __fill, - __ibm128 __v) const - { return _M_insert_float(__s, __io, __fill, 'L', __v); } -#endif _GLIBCXX_END_NAMESPACE_LDBL // Construct correctly padded string, as per 22.2.2.2.2 diff --git a/libstdc++-v3/include/bits/locale_facets_nonio.h b/libstdc++-v3/include/bits/locale_facets_nonio.h index 6af68d3fa90..b76eac435bd 100644 --- a/libstdc++-v3/include/bits/locale_facets_nonio.h +++ b/libstdc++-v3/include/bits/locale_facets_nonio.h @@ -1566,7 +1566,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 */ // XXX GLIBCXX_ABI Deprecated #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \ - && (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__) + && _GLIBCXX_USE_CXX11_ABI == 0 virtual iter_type __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, double& __units) const; @@ -1587,17 +1587,9 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, string_type& __digits) const; - // XXX GLIBCXX_ABI Deprecated -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ - virtual iter_type - __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, - ios_base::iostate& __err, __ibm128& __units) const; -#endif - // XXX GLIBCXX_ABI Deprecated #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \ - && (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__) + && _GLIBCXX_USE_CXX11_ABI == 0 virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, long double& __units) const; @@ -1719,7 +1711,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 */ // XXX GLIBCXX_ABI Deprecated #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \ - && (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__) + && _GLIBCXX_USE_CXX11_ABI == 0 virtual iter_type __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, double __units) const; @@ -1752,17 +1744,9 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, const string_type& __digits) const; - // XXX GLIBCXX_ABI Deprecated -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ - virtual iter_type - __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, - __ibm128 __units) const; -#endif - // XXX GLIBCXX_ABI Deprecated #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \ - && (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__) + && _GLIBCXX_USE_CXX11_ABI == 0 virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, long double __units) const; diff --git a/libstdc++-v3/include/bits/locale_facets_nonio.tcc b/libstdc++-v3/include/bits/locale_facets_nonio.tcc index 9e2b6577969..a8639f6ba28 100644 --- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc +++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc @@ -350,7 +350,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 } #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \ - && (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__) + && _GLIBCXX_USE_CXX11_ABI == 0 template _InIter money_get<_CharT, _InIter>:: @@ -401,22 +401,6 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 return __beg; } -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ - template - _InIter - money_get<_CharT, _InIter>:: - __do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, - ios_base::iostate& __err, __ibm128& __units) const - { - string __str; - __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) - : _M_extract(__beg, __end, __io, __err, __str); - std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); - return __beg; - } -#endif - template template _OutIter @@ -578,7 +562,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 } #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \ - && (_GLIBCXX_USE_CXX11_ABI == 0 || defined __LONG_DOUBLE_IEEE128__) + && _GLIBCXX_USE_CXX11_ABI == 0 template _OutIter money_put<_CharT, _OutIter>:: @@ -633,47 +617,6 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 { return __intl ? _M_insert(__s, __io, __fill, __digits) : _M_insert(__s, __io, __fill, __digits); } -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \ - && defined __LONG_DOUBLE_IEEE128__ - template - _OutIter - money_put<_CharT, _OutIter>:: - __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, - __ibm128 __units) const - { - const locale __loc = __io.getloc(); - const ctype<_CharT>& __ctype = use_facet >(__loc); -#if _GLIBCXX_USE_C99_STDIO - // First try a buffer perhaps big enough. - int __cs_size = 64; - char* __cs = static_cast(__builtin_alloca(__cs_size)); - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 328. Bad sprintf format modifier in money_put<>::do_put() - int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, - "%.*Lf", 0, __units); - // If the buffer was not large enough, try again with the correct size. - if (__len >= __cs_size) - { - __cs_size = __len + 1; - __cs = static_cast(__builtin_alloca(__cs_size)); - __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, - "%.*Lf", 0, __units); - } -#else - // max_exponent10 + 1 for the integer part, + 2 for sign and '\0'. - const int __cs_size = - __gnu_cxx::__numeric_traits::__max_exponent10 + 3; - char* __cs = static_cast(__builtin_alloca(__cs_size)); - int __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, "%.*Lf", - 0, __units); -#endif - string_type __digits(__len, char_type()); - __ctype.widen(__cs, __cs + __len, &__digits[0]); - return __intl ? _M_insert(__s, __io, __fill, __digits) - : _M_insert(__s, __io, __fill, __digits); - } -#endif - _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 // NB: Not especially useful. Without an ios_base object or some diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 739d15d2ccb..21b6db7fb1c 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -71,20 +71,6 @@ else ldbl_compat_sources = endif -if GLIBCXX_LDBL_ALT128_COMPAT -if ENABLE_DUAL_ABI -ldbl_alt128_compat_cxx11_sources = \ - compatibility-ldbl-alt128-cxx11.cc -else -ldbl_alt128_compat_cxx11_sources = -endif -ldbl_alt128_compat_sources = \ - compatibility-ldbl-alt128.cc \ - ${ldbl_alt128_compat_cxx11_sources} -else -ldbl_alt128_compat_sources = -endif - parallel_compat_sources = \ compatibility-parallel_list.cc compatibility-parallel_list-2.cc @@ -101,8 +87,7 @@ cxx11_sources = \ compatibility-atomic-c++0x.cc \ compatibility-thread-c++0x.cc \ compatibility-chrono.cc \ - compatibility-condvar.cc \ - ${ldbl_alt128_compat_sources} + compatibility-condvar.cc libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) @@ -136,21 +121,6 @@ compatibility-ldbl.o: compatibility-ldbl.cc $(CXXCOMPILE) $(LONG_DOUBLE_COMPAT_FLAGS) -c $< endif -# Use special rules for compatibility-ldbl-alt128.cc compilation, as we need to -# ensure it is compiled with the correct flag. -if GLIBCXX_LDBL_ALT128_COMPAT -compatibility-ldbl-alt128.lo: compatibility-ldbl-alt128.cc - $(LTCXXCOMPILE) $(LONG_DOUBLE_ALT128_COMPAT_FLAGS) -std=gnu++11 -c $< -compatibility-ldbl-alt128.o: compatibility-ldbl-alt128.cc - $(CXXCOMPILE) $(LONG_DOUBLE_ALT128_COMPAT_FLAGS) -std=gnu++11 -c $< -if ENABLE_DUAL_ABI -compatibility-ldbl-alt128-cxx11.lo: compatibility-ldbl-alt128-cxx11.cc - $(LTCXXCOMPILE) $(LONG_DOUBLE_ALT128_COMPAT_FLAGS) -std=gnu++11 -c $< -compatibility-ldbl-alt128-cxx11.o: compatibility-ldbl-alt128-cxx11.cc - $(CXXCOMPILE) $(LONG_DOUBLE_ALT128_COMPAT_FLAGS) -std=gnu++11 -c $< -endif -endif - # Use special rules for C++11 files/objects. compatibility-c++0x.lo: compatibility-c++0x.cc $(LTCXXCOMPILE) -std=gnu++11 -c $< diff --git a/libstdc++-v3/src/c++11/compatibility-ldbl-alt128-cxx11.cc b/libstdc++-v3/src/c++11/compatibility-ldbl-alt128-cxx11.cc deleted file mode 100644 index 21d5a6ca421..00000000000 --- a/libstdc++-v3/src/c++11/compatibility-ldbl-alt128-cxx11.cc +++ /dev/null @@ -1,102 +0,0 @@ -// Compatibility symbols for alternate 128-bit long-double format -*- C++ -*- - -// Copyright (C) 2018 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -#define _GLIBCXX_USE_CXX11_ABI 1 -#include - -#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - -#if !defined(_GLIBCXX_USE_DUAL_ABI) -#error "compatibility-ldbl-alt128-cxx11.cc must only be compiled when dual ABI is enabled" -#endif - -#ifndef __LONG_DOUBLE_IBM128__ -#error "compatibility-ldbl-alt128.cc must be compiled with -mabi=ibmlongdouble" -#endif - -#define C char -#define C_is_char -#include "locale-inst-monetary.h" - -#ifdef _GLIBCXX_USE_WCHAR_T -# undef C -# undef C_is_char -# define C wchar_t -# include "locale-inst-monetary.h" -#endif - -#include -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - namespace - { - alignas(money_get) char money_get_c[sizeof(money_get)]; - alignas(money_put) char money_put_c[sizeof(money_put)]; -#ifdef _GLIBCXX_USE_WCHAR_T - alignas(money_get) char money_get_w[sizeof(money_get)]; - alignas(money_put) char money_put_w[sizeof(money_put)]; -#endif - - template - void - init_facet(function& func, - Facet* facet) - { - func(&Facet::id, facet); - } - - } // namespace - - template class function; - - void - __locale_Impl_init_extra_ldbl128( - function f, - bool classic) - { - if (classic) - { - init_facet(f, new (&money_get_c) money_get(1)); - init_facet(f, new (&money_put_c) money_put(1)); -#ifdef _GLIBCXX_USE_WCHAR_T - init_facet(f, new (&money_get_w) money_get(1)); - init_facet(f, new (&money_put_w) money_put(1)); -#endif - } - else - { - init_facet(f, new money_get); - init_facet(f, new money_put); -#ifdef _GLIBCXX_USE_WCHAR_T - init_facet(f, new money_get); - init_facet(f, new money_put); -#endif - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace -#endif diff --git a/libstdc++-v3/src/c++11/compatibility-ldbl-alt128.cc b/libstdc++-v3/src/c++11/compatibility-ldbl-alt128.cc deleted file mode 100644 index 27852f6e271..00000000000 --- a/libstdc++-v3/src/c++11/compatibility-ldbl-alt128.cc +++ /dev/null @@ -1,234 +0,0 @@ -// Compatibility symbols for alternate 128-bit long-double format -*- C++ -*- - -// Copyright (C) 2018 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -#define _GLIBCXX_USE_CXX11_ABI 0 -#include - -#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - -#ifndef __LONG_DOUBLE_IBM128__ -#error "compatibility-ldbl-alt128.cc must be compiled with -mabi=ibmlongdouble" -#endif - -#define C char -#define C_is_char -#include "locale-inst-numeric.h" -#include "locale-inst-monetary.h" -#include "compatibility-ldbl-facets-aliases.h" - -#ifdef _GLIBCXX_USE_WCHAR_T -# undef C -# undef C_is_char -# define C wchar_t -# include "locale-inst-numeric.h" -# include "locale-inst-monetary.h" -# include "compatibility-ldbl-facets-aliases.h" -# undef C -#endif - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // long double - const bool numeric_limits::is_specialized; - const int numeric_limits::digits; - const int numeric_limits::digits10; - const int numeric_limits::max_digits10; - const bool numeric_limits::is_signed; - const bool numeric_limits::is_integer; - const bool numeric_limits::is_exact; - const int numeric_limits::radix; - const int numeric_limits::min_exponent; - const int numeric_limits::min_exponent10; - const int numeric_limits::max_exponent; - const int numeric_limits::max_exponent10; - const bool numeric_limits::has_infinity; - const bool numeric_limits::has_quiet_NaN; - const bool numeric_limits::has_signaling_NaN; - const float_denorm_style numeric_limits::has_denorm; - const bool numeric_limits::has_denorm_loss; - const bool numeric_limits::is_iec559; - const bool numeric_limits::is_bounded; - const bool numeric_limits::is_modulo; - const bool numeric_limits::traps; - const bool numeric_limits::tinyness_before; - const float_round_style numeric_limits::round_style; - - template<> - void - __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, - const __c_locale& __cloc) throw() - { - char* __sanity; -#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) - // Prefer strtold_l, as __strtold_l isn't prototyped in more recent - // glibc versions. - __v = strtold_l(__s, &__sanity, __cloc); -#else - __v = __strtold_l(__s, &__sanity, __cloc); -#endif - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 23. Num_get overflow result. - if (__sanity == __s || *__sanity != '\0') - { - __v = 0.0l; - __err = ios_base::failbit; - } - else if (__v == numeric_limits::infinity()) - { - __v = numeric_limits::max(); - __err = ios_base::failbit; - } - else if (__v == -numeric_limits::infinity()) - { - __v = -numeric_limits::max(); - __err = ios_base::failbit; - } - } - - namespace - { - alignas(money_get) char money_get_c[sizeof(money_get)]; - alignas(money_put) char money_put_c[sizeof(money_put)]; - alignas(num_get) char num_get_c[sizeof(num_get)]; - alignas(num_put) char num_put_c[sizeof(num_put)]; -#ifdef _GLIBCXX_USE_WCHAR_T - alignas(money_get) char money_get_w[sizeof(money_get)]; - alignas(money_put) char money_put_w[sizeof(money_put)]; - alignas(num_get) char num_get_w[sizeof(num_get)]; - alignas(num_put) char num_put_w[sizeof(num_put)]; -#endif - } - - extern void - __locale_Impl_init_extra_ldbl128( - function, - bool); - - void - locale::_Impl::_M_init_extra_ldbl128(bool classic) - { - if (classic) - { - _M_init_facet(new (&money_get_c) money_get(1)); - _M_init_facet(new (&money_put_c) money_put(1)); - _M_init_facet(new (&num_get_c) num_get(1)); - _M_init_facet(new (&num_put_c) num_put(1)); -#ifdef _GLIBCXX_USE_WCHAR_T - _M_init_facet(new (&money_get_w) money_get(1)); - _M_init_facet(new (&money_put_w) money_put(1)); - _M_init_facet(new (&num_get_w) num_get(1)); - _M_init_facet(new (&num_put_w) num_put(1)); -#endif - } - else - { - _M_init_facet(new money_get); - _M_init_facet(new money_put); - _M_init_facet(new num_get); - _M_init_facet(new num_put); -#ifdef _GLIBCXX_USE_WCHAR_T - _M_init_facet(new money_get); - _M_init_facet(new money_put); - _M_init_facet(new num_get); - _M_init_facet(new num_put); -#endif - } - -#if _GLIBCXX_USE_DUAL_ABI - __locale_Impl_init_extra_ldbl128( - [this](const locale::id* i, const facet* f) { - _M_install_facet(i, f); - }, - classic); -#endif - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - template istream& istream::operator>>(long double&); - template istream& istream::_M_extract(long double&); - template ostream& ostream::operator<<(long double); - template ostream& ostream::_M_insert(long double); -#ifdef _GLIBCXX_USE_WCHAR_T - template wistream& wistream::operator>>(long double&); - template wistream& wistream::_M_extract(long double&); - template wostream& wostream::operator<<(long double); - template wostream& wostream::_M_insert(long double); -#endif -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - template - basic_istream >& - operator>>(basic_istream >&, - complex&); - template - basic_ostream >& - operator<<(basic_ostream >&, - const complex&); -#ifdef _GLIBCXX_USE_WCHAR_T - template - basic_istream >& - operator>>(basic_istream >&, - complex&); - template - basic_ostream >& - operator<<(basic_ostream >&, - const complex&); -#endif -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#include -#include - -// For std::tr1::hash::operator() -#include "../c++98/hash-long-double-tr1-aux.cc" - -// std::tr1::hash::operator() -// and std::hash::operator() -// are the same, no need to duplicate them. -extern "C" void -_ZNKSt4hashIgEclEg (void) - __attribute__((alias ("_ZNKSt3tr14hashIgEclEg"))); - -#endif diff --git a/libstdc++-v3/src/c++11/compatibility-ldbl-facets-aliases.h b/libstdc++-v3/src/c++11/compatibility-ldbl-facets-aliases.h deleted file mode 100644 index 7bdf9810d0e..00000000000 --- a/libstdc++-v3/src/c++11/compatibility-ldbl-facets-aliases.h +++ /dev/null @@ -1,128 +0,0 @@ -// Compatibility aliases for long double support in locales -*- C++ -*- - -// Copyright (C) 1999-2018 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -#ifndef C -#define "This file should not be compiled directly, only included" -#endif - -#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT -#define "This file should only be used for _GLIBCXX_LONG_DOUBLE_COMPAT builds" -#endif - -// XXX GLIBCXX_ABI Deprecated -#if defined __LONG_DOUBLE_128__ && ! defined __LONG_DOUBLE_IEEE128__ - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wattribute-alias" - -#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ - extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) - -// Define members of std::num_get and std::num_put as aliases for -// members of __gnu_cxx_ldbl128::num_get and __gnu_cxx_ldbl128::num_put -#ifdef C_is_char -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_, - _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_, - _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_, - _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_, - _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_, - _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_, - _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, - _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, - _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs, - _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs, - _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs); -#else // ! C_is_char -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, - _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_, - _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_, - _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_, - _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_, - _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_, - _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_, - _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, - _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, - _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE, - _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE); -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE, - _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE); -#endif // C_is_char - - -#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT -// Define __gnu_cxx_ieee128::num_put<>::_M_insert_float(..., __ibm128) as -// alias of __gnu_cxx_ldbl128::num_put<>::_M_insert_float(..., __ibm128) -# ifdef C_is_char -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_, - _ZNKSt17__gnu_cxx_ieee1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_); -# else -_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_, - _ZNKSt17__gnu_cxx_ieee1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_); -# endif -#endif // _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - -#undef _GLIBCXX_LDBL_COMPAT -#pragma GCC diagnostic pop - -#endif // __LONG_DOUBLE_128__ && ! __LONG_DOUBLE_IEEE128__ diff --git a/libstdc++-v3/src/c++11/cow-locale_init.cc b/libstdc++-v3/src/c++11/cow-locale_init.cc index bf270712e47..98a2ef41f56 100644 --- a/libstdc++-v3/src/c++11/cow-locale_init.cc +++ b/libstdc++-v3/src/c++11/cow-locale_init.cc @@ -125,7 +125,6 @@ namespace _M_init_facet_unchecked(new (&messages_w) std::messages(1)); #endif - // The caches must be populated last, after creating all facets. _M_caches[numpunct::id._M_id()] = __npc; _M_caches[moneypunct::id._M_id()] = __mpcf; _M_caches[moneypunct::id._M_id()] = __mpct; diff --git a/libstdc++-v3/src/c++11/cxx11-locale-inst.cc b/libstdc++-v3/src/c++11/cxx11-locale-inst.cc index 9378550124f..7b132a748bf 100644 --- a/libstdc++-v3/src/c++11/cxx11-locale-inst.cc +++ b/libstdc++-v3/src/c++11/cxx11-locale-inst.cc @@ -32,6 +32,8 @@ # error This file should not be compiled for this configuration. #endif -#define C char -#define C_is_char +#ifndef C +# define C char +# define C_is_char +#endif # include "locale-inst.cc" diff --git a/libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc b/libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc index 07eb6008361..cf3d6dc7e34 100644 --- a/libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc +++ b/libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc @@ -24,15 +24,9 @@ // ISO C++ 14882: 22.1 Locales // -// Facet wchar_t instantiations using new ABI strings. - #define _GLIBCXX_USE_CXX11_ABI 1 #include -#if ! _GLIBCXX_USE_DUAL_ABI -# error This file should not be compiled for this configuration. -#endif - #ifdef _GLIBCXX_USE_WCHAR_T #define C wchar_t -#include "locale-inst.cc" +#include "cxx11-locale-inst.cc" #endif diff --git a/libstdc++-v3/src/c++11/locale-inst-monetary.h b/libstdc++-v3/src/c++11/locale-inst-monetary.h deleted file mode 100644 index e9b3e7c4e0c..00000000000 --- a/libstdc++-v3/src/c++11/locale-inst-monetary.h +++ /dev/null @@ -1,69 +0,0 @@ -// Explicit instantantiations for monetary facets -*- C++ -*- - -// Copyright (C) 2018 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -#ifndef C -#define "This file should not be compiled directly, only included" -#endif - -// This header is included multiple times, to instantiate these symbols -// for char/wchar_t and for both std::string ABIs, -// and (depending on the target) for two long double formats. - -namespace std _GLIBCXX_VISIBILITY(default) -{ - template const money_put& use_facet >(const locale&); - template const money_get& use_facet >(const locale&); - - template bool has_facet >(const locale&); - template bool has_facet >(const locale&); - -_GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 - template class money_get >; - template class money_put >; - - template - istreambuf_iterator - money_get >:: - _M_extract(istreambuf_iterator, istreambuf_iterator, - ios_base&, ios_base::iostate&, string&) const; - - template - istreambuf_iterator - money_get >:: - _M_extract(istreambuf_iterator, istreambuf_iterator, - ios_base&, ios_base::iostate&, string&) const; - - template - ostreambuf_iterator - money_put >:: - _M_insert(ostreambuf_iterator, ios_base&, C, - const string_type&) const; - - template - ostreambuf_iterator - money_put >:: - _M_insert(ostreambuf_iterator, ios_base&, C, - const string_type&) const; -_GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 -} // namespace std diff --git a/libstdc++-v3/src/c++11/locale-inst-numeric.h b/libstdc++-v3/src/c++11/locale-inst-numeric.h deleted file mode 100644 index 0ec93e27937..00000000000 --- a/libstdc++-v3/src/c++11/locale-inst-numeric.h +++ /dev/null @@ -1,133 +0,0 @@ -// Explicit instantantiations for numeric facets -*- C++ -*- - -// Copyright (C) 2018 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -#ifndef C -#define "This file should not be compiled directly, only included" -#endif - -namespace std _GLIBCXX_VISIBILITY(default) -{ -#if ! _GLIBCXX_USE_CXX11_ABI - template const num_get& use_facet >(const locale&); - template const num_put& use_facet >(const locale&); - - template bool has_facet >(const locale&); - template bool has_facet >(const locale&); -#endif - -_GLIBCXX_BEGIN_NAMESPACE_LDBL - -#if ! _GLIBCXX_USE_CXX11_ABI - template class num_get >; - template class num_put >; -#endif - - // num_get member function templates - template - istreambuf_iterator - num_get >:: - _M_extract_int(istreambuf_iterator, istreambuf_iterator, - ios_base&, ios_base::iostate&, - long&) const; - - template - istreambuf_iterator - num_get >:: - _M_extract_int(istreambuf_iterator, istreambuf_iterator, - ios_base&, ios_base::iostate&, - unsigned short&) const; - - template - istreambuf_iterator - num_get >:: - _M_extract_int(istreambuf_iterator, istreambuf_iterator, - ios_base&, ios_base::iostate&, - unsigned int&) const; - - template - istreambuf_iterator - num_get >:: - _M_extract_int(istreambuf_iterator, istreambuf_iterator, - ios_base&, ios_base::iostate&, - unsigned long&) const; - -#ifdef _GLIBCXX_USE_LONG_LONG - template - istreambuf_iterator - num_get >:: - _M_extract_int(istreambuf_iterator, istreambuf_iterator, - ios_base&, ios_base::iostate&, - long long&) const; - - template - istreambuf_iterator - num_get >:: - _M_extract_int(istreambuf_iterator, istreambuf_iterator, - ios_base&, ios_base::iostate&, - unsigned long long&) const; -#endif - -#if ! _GLIBCXX_USE_CXX11_ABI - // num_put member function templates - template - ostreambuf_iterator - num_put >:: - _M_insert_int(ostreambuf_iterator, ios_base&, C, - long) const; - - template - ostreambuf_iterator - num_put >:: - _M_insert_int(ostreambuf_iterator, ios_base&, C, - unsigned long) const; - -#ifdef _GLIBCXX_USE_LONG_LONG - template - ostreambuf_iterator - num_put >:: - _M_insert_int(ostreambuf_iterator, ios_base&, C, - long long) const; - - template - ostreambuf_iterator - num_put >:: - _M_insert_int(ostreambuf_iterator, ios_base&, C, - unsigned long long) const; -#endif - - template - ostreambuf_iterator - num_put >:: - _M_insert_float(ostreambuf_iterator, ios_base&, C, char, - double) const; - - template - ostreambuf_iterator - num_put >:: - _M_insert_float(ostreambuf_iterator, ios_base&, C, char, - long double) const; -#endif - -_GLIBCXX_END_NAMESPACE_LDBL -} // namespace std diff --git a/libstdc++-v3/src/c++11/locale-inst.cc b/libstdc++-v3/src/c++11/locale-inst.cc index cd99648e8f6..4dc7f5c0780 100644 --- a/libstdc++-v3/src/c++11/locale-inst.cc +++ b/libstdc++-v3/src/c++11/locale-inst.cc @@ -43,9 +43,6 @@ # define C_is_char #endif -#include "locale-inst-numeric.h" -#include "locale-inst-monetary.h" - namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -61,6 +58,33 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 template class moneypunct_byname; template class moneypunct_byname; _GLIBCXX_END_NAMESPACE_CXX11 +_GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 + template class money_get >; + template class money_put >; + template + istreambuf_iterator + money_get >:: + _M_extract(istreambuf_iterator, istreambuf_iterator, + ios_base&, ios_base::iostate&, string&) const; + + template + istreambuf_iterator + money_get >:: + _M_extract(istreambuf_iterator, istreambuf_iterator, + ios_base&, ios_base::iostate&, string&) const; + + template + ostreambuf_iterator + money_put >:: + _M_insert(ostreambuf_iterator, ios_base&, C, + const string_type&) const; + + template + ostreambuf_iterator + money_put >:: + _M_insert(ostreambuf_iterator, ios_base&, C, + const string_type&) const; +_GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 // numpunct, numpunct_byname, num_get, and num_put #if ! _GLIBCXX_USE_CXX11_ABI @@ -70,6 +94,97 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 template class numpunct; template class numpunct_byname; _GLIBCXX_END_NAMESPACE_CXX11 +_GLIBCXX_BEGIN_NAMESPACE_LDBL +#if ! _GLIBCXX_USE_CXX11_ABI + template class num_get >; +#endif + + template + istreambuf_iterator + num_get >:: + _M_extract_int(istreambuf_iterator, istreambuf_iterator, + ios_base&, ios_base::iostate&, + long&) const; + + template + istreambuf_iterator + num_get >:: + _M_extract_int(istreambuf_iterator, istreambuf_iterator, + ios_base&, ios_base::iostate&, + unsigned short&) const; + + template + istreambuf_iterator + num_get >:: + _M_extract_int(istreambuf_iterator, istreambuf_iterator, + ios_base&, ios_base::iostate&, + unsigned int&) const; + + template + istreambuf_iterator + num_get >:: + _M_extract_int(istreambuf_iterator, istreambuf_iterator, + ios_base&, ios_base::iostate&, + unsigned long&) const; + +#ifdef _GLIBCXX_USE_LONG_LONG + template + istreambuf_iterator + num_get >:: + _M_extract_int(istreambuf_iterator, istreambuf_iterator, + ios_base&, ios_base::iostate&, + long long&) const; + + template + istreambuf_iterator + num_get >:: + _M_extract_int(istreambuf_iterator, istreambuf_iterator, + ios_base&, ios_base::iostate&, + unsigned long long&) const; +#endif + +#if ! _GLIBCXX_USE_CXX11_ABI + template class num_put >; + + template + ostreambuf_iterator + num_put >:: + _M_insert_int(ostreambuf_iterator, ios_base&, C, + long) const; + + template + ostreambuf_iterator + num_put >:: + _M_insert_int(ostreambuf_iterator, ios_base&, C, + unsigned long) const; + +#ifdef _GLIBCXX_USE_LONG_LONG + template + ostreambuf_iterator + num_put >:: + _M_insert_int(ostreambuf_iterator, ios_base&, C, + long long) const; + + template + ostreambuf_iterator + num_put >:: + _M_insert_int(ostreambuf_iterator, ios_base&, C, + unsigned long long) const; +#endif + + template + ostreambuf_iterator + num_put >:: + _M_insert_float(ostreambuf_iterator, ios_base&, C, char, + double) const; + + template + ostreambuf_iterator + num_put >:: + _M_insert_float(ostreambuf_iterator, ios_base&, C, char, + long double) const; +#endif +_GLIBCXX_END_NAMESPACE_LDBL // time_get and time_put #if ! _GLIBCXX_USE_CXX11_ABI @@ -135,6 +250,16 @@ _GLIBCXX_END_NAMESPACE_CXX11 const numpunct& use_facet >(const locale&); +#if ! _GLIBCXX_USE_CXX11_ABI + template + const num_put& + use_facet >(const locale&); + + template + const num_get& + use_facet >(const locale&); +#endif + template const moneypunct& use_facet >(const locale&); @@ -143,6 +268,14 @@ _GLIBCXX_END_NAMESPACE_CXX11 const moneypunct& use_facet >(const locale&); + template + const money_put& + use_facet >(const locale&); + + template + const money_get& + use_facet >(const locale&); + #if ! _GLIBCXX_USE_CXX11_ABI template const __timepunct& @@ -180,10 +313,28 @@ _GLIBCXX_END_NAMESPACE_CXX11 bool has_facet >(const locale&); +#if ! _GLIBCXX_USE_CXX11_ABI + template + bool + has_facet >(const locale&); + + template + bool + has_facet >(const locale&); +#endif + template bool has_facet >(const locale&); + template + bool + has_facet >(const locale&); + + template + bool + has_facet >(const locale&); + #if ! _GLIBCXX_USE_CXX11_ABI template bool @@ -229,6 +380,45 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace // XXX GLIBCXX_ABI Deprecated -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && ! _GLIBCXX_USE_CXX11_ABI -#include "compatibility-ldbl-facets-aliases.h" +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined C_is_char \ + && _GLIBCXX_USE_CXX11_ABI == 0 + +#pragma GCC diagnostic ignored "-Wattribute-alias" + +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) + +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs, + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs, + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs); + #endif // _GLIBCXX_LONG_DOUBLE_COMPAT diff --git a/libstdc++-v3/src/c++11/wlocale-inst.cc b/libstdc++-v3/src/c++11/wlocale-inst.cc index a9a246f8f97..3a54fb51aab 100644 --- a/libstdc++-v3/src/c++11/wlocale-inst.cc +++ b/libstdc++-v3/src/c++11/wlocale-inst.cc @@ -33,4 +33,47 @@ #ifdef _GLIBCXX_USE_WCHAR_T #define C wchar_t #include "locale-inst.cc" -#endif // _GLIBCXX_USE_WCHAR_T + +// XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT + +#pragma GCC diagnostic ignored "-Wattribute-alias" + +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) + +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE, + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE, + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE); + +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT +#endif diff --git a/libstdc++-v3/src/c++98/locale_init.cc b/libstdc++-v3/src/c++98/locale_init.cc index 77c6eecc1a3..c3841ccbd3c 100644 --- a/libstdc++-v3/src/c++98/locale_init.cc +++ b/libstdc++-v3/src/c++98/locale_init.cc @@ -57,16 +57,8 @@ _GLIBCXX_LOC_ID(_ZNSt8messagesIwE2idE); namespace { - const int num_facets = ( - _GLIBCXX_NUM_FACETS + _GLIBCXX_NUM_CXX11_FACETS -#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - + _GLIBCXX_NUM_LBDL_ALT128_FACETS -#endif - ) -#ifdef _GLIBCXX_USE_WCHAR_T - * 2 -#endif - + _GLIBCXX_NUM_UNICODE_FACETS; + const int num_facets = _GLIBCXX_NUM_FACETS + _GLIBCXX_NUM_UNICODE_FACETS + + (_GLIBCXX_USE_DUAL_ABI ? _GLIBCXX_NUM_CXX11_FACETS : 0); __gnu_cxx::__mutex& get_locale_mutex() @@ -567,10 +559,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif -#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - _M_init_extra_ldbl128(true); -#endif - #if _GLIBCXX_USE_DUAL_ABI facet* extra[] = { __npc, __mpcf, __mpct # ifdef _GLIBCXX_USE_WCHAR_T @@ -578,7 +566,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION # endif }; - // This call must be after creating all facets, as it sets caches. _M_init_extra(extra); #endif diff --git a/libstdc++-v3/src/c++98/localename.cc b/libstdc++-v3/src/c++98/localename.cc index 29f439ffa9a..243acce164c 100644 --- a/libstdc++-v3/src/c++98/localename.cc +++ b/libstdc++-v3/src/c++98/localename.cc @@ -171,16 +171,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } } -const int num_facets = ( - _GLIBCXX_NUM_FACETS + _GLIBCXX_NUM_CXX11_FACETS -#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - + _GLIBCXX_NUM_LBDL_ALT128_FACETS -#endif - ) -#ifdef _GLIBCXX_USE_WCHAR_T - * 2 -#endif - + _GLIBCXX_NUM_UNICODE_FACETS; +const int num_facets = _GLIBCXX_NUM_FACETS + _GLIBCXX_NUM_UNICODE_FACETS + + (_GLIBCXX_USE_DUAL_ABI ? _GLIBCXX_NUM_CXX11_FACETS : 0); // Construct named _Impl. locale::_Impl:: @@ -292,10 +284,6 @@ const int num_facets = ( _M_init_extra(&__cloc, &__clocm, __s, __smon); #endif -#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT - _M_init_extra_ldbl128(false); -#endif - locale::facet::_S_destroy_c_locale(__cloc); if (__clocm != __cloc) locale::facet::_S_destroy_c_locale(__clocm); diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc index 1f235baa84a..33b9ec15935 100644 --- a/libstdc++-v3/testsuite/util/testsuite_abi.cc +++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc @@ -207,7 +207,6 @@ check_version(symbol& test, bool added) known_versions.push_back("GLIBCXX_3.4.24"); known_versions.push_back("GLIBCXX_3.4.25"); known_versions.push_back("GLIBCXX_3.4.26"); - known_versions.push_back("GLIBCXX_IEEE128_3.4.26"); known_versions.push_back("GLIBCXX_3.4.27"); known_versions.push_back("GLIBCXX_3.4.28"); known_versions.push_back("GLIBCXX_3.4.29"); @@ -225,9 +224,8 @@ check_version(symbol& test, bool added) known_versions.push_back("CXXABI_1.3.9"); known_versions.push_back("CXXABI_1.3.10"); known_versions.push_back("CXXABI_1.3.11"); - known_versions.push_back("CXXABI_IEEE128_1.3.12"); + known_versions.push_back("CXXABI_1.3.12"); known_versions.push_back("CXXABI_1.3.13"); - known_versions.push_back("CXXABI_IEEE128_1.3.13"); known_versions.push_back("CXXABI_TM_1"); known_versions.push_back("CXXABI_FLOAT128"); } @@ -249,9 +247,7 @@ check_version(symbol& test, bool added) // XXX remove next line when GLIBCXX_3.4.30 is added and baselines // have been regenerated to include GLIBCXX_LDBL_3.4.29 symbols: || test.version_name == "GLIBCXX_LDBL_3.4.29" - || test.version_name == "CXXABI_IEEE128_1.3.12" || test.version_name == "CXXABI_1.3.13" - || test.version_name == "CXXABI_IEEE128_1.3.13" || test.version_name == "CXXABI_FLOAT128" || test.version_name == "CXXABI_TM_1"); if (added && !latestp) @@ -264,17 +260,7 @@ check_version(symbol& test, bool added) && test.demangled_name.find("std::__cxx11::") != 0) { if (test.version_name.find("_LDBL_") == std::string::npos - && test.version_name.find("_FLOAT128") == std::string::npos - && test.version_name.find("_IEEE128") == std::string::npos) - test.version_status = symbol::incompatible; - } - - // Check that IEEE128 long double compatibility symbols demangled as - // __ieee128 are put into some _LDBL_IEEE version name. - // XXX is this right? might not want *everything* for __ieee128 in here. - if (added && test.demangled_name.find("__ieee128") != std::string::npos) - { - if (test.version_name.find("_IEEE128") == std::string::npos) + && test.version_name.find("_FLOAT128") == std::string::npos) test.version_status = symbol::incompatible; }