diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-06-16 12:18:53 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-06-16 12:18:53 +0000 |
commit | 85689f73bd8042d0a1b9f71d4d8251e5d3fd26ec (patch) | |
tree | 3a21fc586ea8856aa34a7746f0a2482b4d6e1ca1 /libstdc++-v3/testsuite | |
parent | 8aff7dfaef7d18d45f28d1fcbd9078d7edef83f8 (diff) |
PR libstdc++/81092 add std::wstring symbols and bump library version
PR libstdc++/81092
* acinclude.m4: Bump libtool_VERSION.
* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
* config/abi/pre/gnu.ver: Add wstring constructor symbols to new
GLIBCXX_3.4.24 version.
* doc/xml/manual/abi.xml: Document new versions.
* doc/html/*: Regenerate.
* testsuite/21_strings/basic_string/cons/char/8.cc: Use base object
constructors to ensure required symbols are exported.
* testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
* testsuite/util/testsuite_abi.cc: Add new version.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@249248 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/testsuite')
3 files changed, 34 insertions, 3 deletions
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc index 6fc4fdf6caa3..aceec5cea153 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc @@ -15,16 +15,31 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-options "-O0" } // { dg-do run { target c++11 } } #include <string> #include <testsuite_hooks.h> +struct TestBaseObjCtor : std::string +{ + template<typename... Args> + TestBaseObjCtor(Args&&... args) + : std::string(std::forward<Args>(args)...) + { } +}; + template<typename... Args> std::size_t construct(Args&&... args) { - return std::string( std::forward<Args>(args)... ).length(); + // Use static_cast<Args> to produce either an lvalue or prvalue, + // so args... not left in moved-from state and can be reused below: + TestBaseObjCtor as_base_obj( static_cast<Args>(args)... ); + + std::string as_complete_obj( std::forward<Args>(args)... ); + + return as_complete_obj.length(); } void diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc index 0fee57826229..734573768d76 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc @@ -15,16 +15,31 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-options "-O0" } // { dg-do run { target c++11 } } #include <string> #include <testsuite_hooks.h> +struct TestBaseObjCtor : std::wstring +{ + template<typename... Args> + TestBaseObjCtor(Args&&... args) + : std::wstring(std::forward<Args>(args)...) + { } +}; + template<typename... Args> std::size_t construct(Args&&... args) { - return std::wstring( std::forward<Args>(args)... ).length(); + // Use static_cast<Args> to produce either an lvalue or prvalue, + // so args... not left in moved-from state and can be reused below: + TestBaseObjCtor as_base_obj( static_cast<Args>(args)... ); + + std::wstring as_complete_obj( std::forward<Args>(args)... ); + + return as_complete_obj.length(); } void diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc index f5fc594d194a..ee7572ea2444 100644 --- a/libstdc++-v3/testsuite/util/testsuite_abi.cc +++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc @@ -204,6 +204,7 @@ check_version(symbol& test, bool added) known_versions.push_back("GLIBCXX_LDBL_3.4.21"); known_versions.push_back("GLIBCXX_3.4.22"); known_versions.push_back("GLIBCXX_3.4.23"); + known_versions.push_back("GLIBCXX_3.4.24"); known_versions.push_back("CXXABI_1.3"); known_versions.push_back("CXXABI_LDBL_1.3"); known_versions.push_back("CXXABI_1.3.1"); @@ -234,7 +235,7 @@ check_version(symbol& test, bool added) test.version_status = symbol::incompatible; // Check that added symbols are added in the latest pre-release version. - bool latestp = (test.version_name == "GLIBCXX_3.4.23" + bool latestp = (test.version_name == "GLIBCXX_3.4.24" || test.version_name == "CXXABI_1.3.11" || test.version_name == "CXXABI_FLOAT128" || test.version_name == "CXXABI_TM_1"); |