mirror of git://gcc.gnu.org/git/gcc.git
re PR libstdc++/43622 (Incomplete C++ library support for __float128)
2014-11-18 Marc Glisse <marc.glisse@inria.fr> PR libstdc++/43622 gcc/cp/ * rtti.c (emit_support_tinfos): Handle __float128. libstdc++-v3/ * config/abi/pre/float128.ver: New file. * configure.ac: Use float128.ver when relevant. * configure: Regenerate. * testsuite/util/testsuite_abi.cc (check_version): Accept new CXXABI_FLOAT128 version. From-SVN: r217735
This commit is contained in:
parent
ac2f8d26b5
commit
bb59f396f8
|
|
@ -1,3 +1,8 @@
|
||||||
|
2014-11-18 Marc Glisse <marc.glisse@inria.fr>
|
||||||
|
|
||||||
|
PR libstdc++/43622
|
||||||
|
* rtti.c (emit_support_tinfos): Handle __float128.
|
||||||
|
|
||||||
2014-11-18 Jason Merrill <jason@redhat.com>
|
2014-11-18 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/63925
|
PR c++/63925
|
||||||
|
|
|
||||||
|
|
@ -1547,6 +1547,8 @@ emit_support_tinfos (void)
|
||||||
emit_support_tinfo_1 (int_n_trees[ix].signed_type);
|
emit_support_tinfo_1 (int_n_trees[ix].signed_type);
|
||||||
emit_support_tinfo_1 (int_n_trees[ix].unsigned_type);
|
emit_support_tinfo_1 (int_n_trees[ix].unsigned_type);
|
||||||
}
|
}
|
||||||
|
for (tree t = registered_builtin_types; t; t = TREE_CHAIN (t))
|
||||||
|
emit_support_tinfo_1 (TREE_VALUE (t));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Finish a type info decl. DECL_PTR is a pointer to an unemitted
|
/* Finish a type info decl. DECL_PTR is a pointer to an unemitted
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,12 @@
|
||||||
|
2014-11-18 Marc Glisse <marc.glisse@inria.fr>
|
||||||
|
|
||||||
|
PR libstdc++/43622
|
||||||
|
* config/abi/pre/float128.ver: New file.
|
||||||
|
* configure.ac: Use float128.ver when relevant.
|
||||||
|
* configure: Regenerate.
|
||||||
|
* testsuite/util/testsuite_abi.cc (check_version): Accept new
|
||||||
|
CXXABI_FLOAT128 version.
|
||||||
|
|
||||||
2014-11-17 Jason Merrill <jason@redhat.com>
|
2014-11-17 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
* include/backward/binders.h: Suppress -Wdeprecated-declarations.
|
* include/backward/binders.h: Suppress -Wdeprecated-declarations.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Appended to version file.
|
||||||
|
|
||||||
|
CXXABI_FLOAT128 {
|
||||||
|
|
||||||
|
# typeinfo and typeinfo name for __float128
|
||||||
|
_ZT[IS]g;
|
||||||
|
_ZT[IS]Pg;
|
||||||
|
_ZT[IS]PKg;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
@ -15710,6 +15710,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
|
||||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||||
|
|
||||||
|
|
||||||
|
if test "$enable_float128" = yes; then
|
||||||
|
port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/abi/pre/float128.ver"
|
||||||
|
fi
|
||||||
|
|
||||||
# Checks for compiler support that doesn't require linking.
|
# Checks for compiler support that doesn't require linking.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,9 @@ GLIBCXX_ENABLE_THREADS
|
||||||
GLIBCXX_ENABLE_ATOMIC_BUILTINS
|
GLIBCXX_ENABLE_ATOMIC_BUILTINS
|
||||||
GLIBCXX_ENABLE_DECIMAL_FLOAT
|
GLIBCXX_ENABLE_DECIMAL_FLOAT
|
||||||
GLIBCXX_ENABLE_INT128_FLOAT128
|
GLIBCXX_ENABLE_INT128_FLOAT128
|
||||||
|
if test "$enable_float128" = yes; then
|
||||||
|
port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/abi/pre/float128.ver"
|
||||||
|
fi
|
||||||
|
|
||||||
# Checks for compiler support that doesn't require linking.
|
# Checks for compiler support that doesn't require linking.
|
||||||
GLIBCXX_CHECK_COMPILER_FEATURES
|
GLIBCXX_CHECK_COMPILER_FEATURES
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,7 @@ check_version(symbol& test, bool added)
|
||||||
known_versions.push_back("CXXABI_1.3.8");
|
known_versions.push_back("CXXABI_1.3.8");
|
||||||
known_versions.push_back("CXXABI_1.3.9");
|
known_versions.push_back("CXXABI_1.3.9");
|
||||||
known_versions.push_back("CXXABI_TM_1");
|
known_versions.push_back("CXXABI_TM_1");
|
||||||
|
known_versions.push_back("CXXABI_FLOAT128");
|
||||||
}
|
}
|
||||||
compat_list::iterator begin = known_versions.begin();
|
compat_list::iterator begin = known_versions.begin();
|
||||||
compat_list::iterator end = known_versions.end();
|
compat_list::iterator end = known_versions.end();
|
||||||
|
|
@ -230,16 +231,18 @@ check_version(symbol& test, bool added)
|
||||||
// Check that added symbols are added in the latest pre-release version.
|
// Check that added symbols are added in the latest pre-release version.
|
||||||
bool latestp = (test.version_name == "GLIBCXX_3.4.21"
|
bool latestp = (test.version_name == "GLIBCXX_3.4.21"
|
||||||
|| test.version_name == "CXXABI_1.3.9"
|
|| test.version_name == "CXXABI_1.3.9"
|
||||||
|
|| test.version_name == "CXXABI_FLOAT128"
|
||||||
|| test.version_name == "CXXABI_TM_1");
|
|| test.version_name == "CXXABI_TM_1");
|
||||||
if (added && !latestp)
|
if (added && !latestp)
|
||||||
test.version_status = symbol::incompatible;
|
test.version_status = symbol::incompatible;
|
||||||
|
|
||||||
// Check that long double compatibility symbols demangled as
|
// Check that long double compatibility symbols demangled as
|
||||||
// __float128 are put into some _LDBL_ version name.
|
// __float128 and regular __float128 symbols are put into some _LDBL_
|
||||||
|
// or _FLOAT128 version name.
|
||||||
if (added && test.demangled_name.find("__float128") != std::string::npos)
|
if (added && test.demangled_name.find("__float128") != std::string::npos)
|
||||||
{
|
{
|
||||||
// Has to be in _LDBL_ version name.
|
if (test.version_name.find("_LDBL_") == std::string::npos
|
||||||
if (test.version_name.find("_LDBL_") == std::string::npos)
|
&& test.version_name.find("_FLOAT128") == std::string::npos)
|
||||||
test.version_status = symbol::incompatible;
|
test.version_status = symbol::incompatible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue