diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2014-11-18 21:20:53 +0100 |
---|---|---|
committer | Marc Glisse <glisse@gcc.gnu.org> | 2014-11-18 20:20:53 +0000 |
commit | bb59f396f8ca74c7d663c197e99d15bbe9f6e5b6 (patch) | |
tree | 5b3d99e4e1395d1c33d0403fec1bef77b04a596d | |
parent | ac2f8d26b5a601186735d1341eaec7779e9fa7fe (diff) | |
download | gcc-bb59f396f8ca74c7d663c197e99d15bbe9f6e5b6.zip gcc-bb59f396f8ca74c7d663c197e99d15bbe9f6e5b6.tar.gz gcc-bb59f396f8ca74c7d663c197e99d15bbe9f6e5b6.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/rtti.c | 2 | ||||
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/config/abi/pre/float128.ver | 10 | ||||
-rwxr-xr-x | libstdc++-v3/configure | 3 | ||||
-rw-r--r-- | libstdc++-v3/configure.ac | 3 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/util/testsuite_abi.cc | 9 |
7 files changed, 38 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0628b42..2e18932 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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> PR c++/63925 diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 0d6dd96..aef71f2 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -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].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 diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 857c05e..c0e1738 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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> * include/backward/binders.h: Suppress -Wdeprecated-declarations. diff --git a/libstdc++-v3/config/abi/pre/float128.ver b/libstdc++-v3/config/abi/pre/float128.ver new file mode 100644 index 0000000..26c62c7 --- /dev/null +++ b/libstdc++-v3/config/abi/pre/float128.ver @@ -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; + +}; diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 6a57537..5fcb705 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -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 +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. diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index eb826e4..135d536 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -153,6 +153,9 @@ GLIBCXX_ENABLE_THREADS GLIBCXX_ENABLE_ATOMIC_BUILTINS GLIBCXX_ENABLE_DECIMAL_FLOAT 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. GLIBCXX_CHECK_COMPILER_FEATURES diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc index 0699114..15b05dc 100644 --- a/libstdc++-v3/testsuite/util/testsuite_abi.cc +++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc @@ -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.9"); known_versions.push_back("CXXABI_TM_1"); + known_versions.push_back("CXXABI_FLOAT128"); } compat_list::iterator begin = known_versions.begin(); 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. bool latestp = (test.version_name == "GLIBCXX_3.4.21" || test.version_name == "CXXABI_1.3.9" + || test.version_name == "CXXABI_FLOAT128" || test.version_name == "CXXABI_TM_1"); if (added && !latestp) test.version_status = symbol::incompatible; // 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) { - // 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; } |