Skip to content

Commit

Permalink
libstdc++: Add C++ runtime support for new 128-bit long double format
Browse files Browse the repository at this point in the history
This adds support for the new __ieee128 long double format on
powerpc64le targets.

Most of the complexity comes from wanting a single libstdc++.so library
that contains the symbols needed by code compiled with both
-mabi=ibmlongdouble and -mabi=ieeelongdouble (and not forgetting
-mlong-double-64 as well!)

In a few places this just requires an extra overload, for example
std::from_chars has to be overloaded for both forms of long double.
That can be done in a single translation unit that defines overloads
for 'long double' and also '__ieee128', so that user code including
<charconv> will be able to link to a definition for either type of long
double. Those are the easy cases.

The difficult parts are (as for the std::string ABI transition) the I/O
and locale facets. In order to be able to write either form of long
double to an ostream such as std::cout we need the locale to contain a
std::num_put facet that can handle both forms. The same approach is
taken as was already done for supporting 64-bit long double and 128-bit
long double: adding extra overloads of do_put to the facet class. On
targets where the new long double code is enabled, the facets that are
registered in the locale at program startup have additional overloads so
that they can work with any long double type. Where this fails to work
is if user code installs its own facet, which will probably not have the
additional overloads and so will only be able to output one or the other
type. In practice the number of users expecting to be able to use their
own locale facets in code using a mix of -mabi=ibmlongdouble and
-mabi=ieeelongdouble is probably close to zero.

libstdc++-v3/ChangeLog:

	* Makefile.in: Regenerate.
	* config.h.in: Regenerate.
	* config/abi/pre/gnu.ver: Make patterns less greedy.
	* 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.
	* include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
	(__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): 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.am: Use -mabi=ibmlongdouble for
	floating_from_chars.cc.
	* src/c++17/Makefile.in: Regenerate.
	* src/c++17/floating_from_chars.cc (from_chars_impl): Add
	if-constexpr branch for __ieee128.
	(from_chars): Overload for __ieee128.
	* src/c++20/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.
	Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and
	CXXABI_IEEE128_1.3.13 too.
	* testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to
	regex matching expected symbols.
  • Loading branch information
jwakely committed Dec 16, 2020
1 parent f4ae1f2 commit 7c1e7ee
Show file tree
Hide file tree
Showing 44 changed files with 1,380 additions and 311 deletions.
6 changes: 5 additions & 1 deletion libstdc++-v3/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,8 @@ LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LONG_DOUBLE_128_FLAGS = @LONG_DOUBLE_128_FLAGS@
LONG_DOUBLE_ALT128_COMPAT_FLAGS = @LONG_DOUBLE_ALT128_COMPAT_FLAGS@
LONG_DOUBLE_COMPAT_FLAGS = @LONG_DOUBLE_COMPAT_FLAGS@
LTLIBICONV = @LTLIBICONV@
LTLIBOBJS = @LTLIBOBJS@
Expand Down Expand Up @@ -396,11 +398,13 @@ toolexeclibdir = $(glibcxx_toolexeclibdir)
@ENABLE_WERROR_TRUE@WERROR_FLAG = -Werror
@ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS =
@ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates
@GLIBCXX_LDBL_ALT128_COMPAT_FALSE@LDBL_128_FLAGS =
@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@LDBL_128_FLAGS = $(LONG_DOUBLE_128_FLAGS)

# 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=$@
$(SECTION_FLAGS) $(HWCAP_CFLAGS) -frandom-seed=$@ $(LDBL_128_FLAGS)

WARN_CXXFLAGS = \
$(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once
Expand Down
4 changes: 4 additions & 0 deletions libstdc++-v3/config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -882,6 +882,10 @@
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
#undef _GLIBCXX_HOSTED

/* Define if compatibility should be provided for alternative 128-bit long
double formats. */
#undef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT

/* Define if compatibility should be provided for -mlong-double-64. */
#undef _GLIBCXX_LONG_DOUBLE_COMPAT

Expand Down
4 changes: 2 additions & 2 deletions libstdc++-v3/config/abi/pre/gnu.ver
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,7 @@ GLIBCXX_3.4 {
_ZNSt12__basic_fileIcED*;

# std::__convert_to_v
_ZSt14__convert_to_vI[^g]*;
_ZSt14__convert_to_vI[^gU]*;

# __gnu_cxx::stdio_sync_filebuf
_ZTVN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
Expand Down Expand Up @@ -931,7 +931,7 @@ GLIBCXX_3.4 {
_ZGVNSt8time_putI[cw]*;
_ZGVNSt9money_getI[cw]*;
_ZGVNSt9money_putI[cw]*;
_ZGVNSt1[^07]*;
_ZGVNSt1[^079]*;
_ZGVNSt10moneypunctI[cw]Lb[01]*;

# exception constructors taking std::string
Expand Down
53 changes: 53 additions & 0 deletions libstdc++-v3/config/os/gnu-linux/ldbl-ieee128-extra.ver
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Appended to version file.

GLIBCXX_IEEE128_3.4.29 {

*__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;

_ZSt10from_charsPKcS0_Ru9__ieee128St12chars_format;

} GLIBCXX_3.4.29;

CXXABI_IEEE128_1.3.13 {

_ZT[IS]u9__ieee128;
_ZT[IS]Pu9__ieee128;
_ZT[IS]PKu9__ieee128;

} CXXABI_1.3.13;
131 changes: 121 additions & 10 deletions libstdc++-v3/configure
Original file line number Diff line number Diff line change
Expand Up @@ -680,8 +680,12 @@ ENABLE_FILESYSTEM_TS_TRUE
baseline_subdir_switch
baseline_dir
HWCAP_CFLAGS
GLIBCXX_LDBL_ALT128_COMPAT_FALSE
GLIBCXX_LDBL_ALT128_COMPAT_TRUE
GLIBCXX_LDBL_COMPAT_FALSE
GLIBCXX_LDBL_COMPAT_TRUE
LONG_DOUBLE_ALT128_COMPAT_FLAGS
LONG_DOUBLE_128_FLAGS
LONG_DOUBLE_COMPAT_FLAGS
ENABLE_CXX11_ABI_FALSE
ENABLE_CXX11_ABI_TRUE
Expand Down Expand Up @@ -12136,7 +12140,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 12139 "configure"
#line 12143 "configure"
#include "confdefs.h"

#if HAVE_DLFCN_H
Expand Down Expand Up @@ -12242,7 +12246,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 12245 "configure"
#line 12249 "configure"
#include "confdefs.h"

#if HAVE_DLFCN_H
Expand Down Expand Up @@ -15934,7 +15938,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
# Fake what AC_TRY_COMPILE does.

cat > conftest.$ac_ext << EOF
#line 15937 "configure"
#line 15941 "configure"
int main()
{
typedef bool atomic_type;
Expand Down Expand Up @@ -15969,7 +15973,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
rm -f conftest*

cat > conftest.$ac_ext << EOF
#line 15972 "configure"
#line 15976 "configure"
int main()
{
typedef short atomic_type;
Expand Down Expand Up @@ -16004,7 +16008,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
rm -f conftest*

cat > conftest.$ac_ext << EOF
#line 16007 "configure"
#line 16011 "configure"
int main()
{
// NB: _Atomic_word not necessarily int.
Expand Down Expand Up @@ -16040,7 +16044,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
rm -f conftest*

cat > conftest.$ac_ext << EOF
#line 16043 "configure"
#line 16047 "configure"
int main()
{
typedef long long atomic_type;
Expand Down Expand Up @@ -16193,7 +16197,7 @@ $as_echo "mutex" >&6; }
# unnecessary for this test.

cat > conftest.$ac_ext << EOF
#line 16196 "configure"
#line 16200 "configure"
int main()
{
_Decimal32 d1;
Expand Down Expand Up @@ -16235,7 +16239,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# unnecessary for this test.

cat > conftest.$ac_ext << EOF
#line 16238 "configure"
#line 16242 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
Expand Down Expand Up @@ -16269,7 +16273,7 @@ $as_echo "$enable_int128" >&6; }
rm -f conftest*

cat > conftest.$ac_ext << EOF
#line 16272 "configure"
#line 16276 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
Expand Down Expand Up @@ -75695,7 +75699,11 @@ $as_echo "${default_libstdcxx_abi}" >&6; }


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* | \
Expand Down Expand Up @@ -75729,13 +75737,103 @@ $as_echo "#define _GLIBCXX_LONG_DOUBLE_COMPAT 1" >>confdefs.h
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" ;;
LONG_DOUBLE_COMPAT_FLAGS="$LONG_DOUBLE_COMPAT_FLAGS -mno-gnu-attribute"
# Check for IEEE128 support in libm:
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __frexpieee128 in -lm" >&5
$as_echo_n "checking for __frexpieee128 in -lm... " >&6; }
if ${ac_cv_lib_m___frexpieee128+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lm $LIBS"
if test x$gcc_no_link = xyes; then
as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char __frexpieee128 ();
int
main ()
{
return __frexpieee128 ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_m___frexpieee128=yes
else
ac_cv_lib_m___frexpieee128=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m___frexpieee128" >&5
$as_echo "$ac_cv_lib_m___frexpieee128" >&6; }
if test "x$ac_cv_lib_m___frexpieee128" = xyes; then :
ac_ldbl_ieee128_in_libc=yes
else
ac_ldbl_ieee128_in_libc=no
fi

if test $ac_ldbl_ieee128_in_libc = yes; then
# Determine which long double format is the compiler's default:
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

int
main ()
{

#ifndef __LONG_DOUBLE_IEEE128__
#error compiler defaults to ibm128
#endif

;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_ldbl_ieee128_default=yes
else
ac_ldbl_ieee128_default=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# Library objects should use default long double format.
if test "$ac_ldbl_ieee128_default" = yes; then
LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute"
# Except for the ones that explicitly use these flags:
LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ibmlongdouble -mno-gnu-attribute -Wno-psabi"
else
LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute"
LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ieeelongdouble -mno-gnu-attribute -Wno-psabi"
fi

$as_echo "#define _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT 1" >>confdefs.h

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
;;
esac
fi
esac






# Check if assembler supports disabling hardware capability support.

test -z "$HWCAP_CFLAGS" && HWCAP_CFLAGS=''
Expand Down Expand Up @@ -78268,6 +78366,15 @@ else
fi


if test $ac_ldbl_alt128_compat = yes; then
GLIBCXX_LDBL_ALT128_COMPAT_TRUE=
GLIBCXX_LDBL_ALT128_COMPAT_FALSE='#'
else
GLIBCXX_LDBL_ALT128_COMPAT_TRUE='#'
GLIBCXX_LDBL_ALT128_COMPAT_FALSE=
fi


if test $enable_libstdcxx_filesystem_ts = yes; then
ENABLE_FILESYSTEM_TS_TRUE=
ENABLE_FILESYSTEM_TS_FALSE='#'
Expand Down Expand Up @@ -78778,6 +78885,10 @@ if test -z "${GLIBCXX_LDBL_COMPAT_TRUE}" && test -z "${GLIBCXX_LDBL_COMPAT_FALSE
as_fn_error $? "conditional \"GLIBCXX_LDBL_COMPAT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${GLIBCXX_LDBL_ALT128_COMPAT_TRUE}" && test -z "${GLIBCXX_LDBL_ALT128_COMPAT_FALSE}"; then
as_fn_error $? "conditional \"GLIBCXX_LDBL_ALT128_COMPAT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${ENABLE_FILESYSTEM_TS_TRUE}" && test -z "${ENABLE_FILESYSTEM_TS_FALSE}"; then
as_fn_error $? "conditional \"ENABLE_FILESYSTEM_TS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
Expand Down
Loading

0 comments on commit 7c1e7ee

Please sign in to comment.