summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2017-06-16 12:18:53 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2017-06-16 12:18:53 +0000
commit85689f73bd8042d0a1b9f71d4d8251e5d3fd26ec (patch)
tree3a21fc586ea8856aa34a7746f0a2482b4d6e1ca1 /libstdc++-v3/testsuite
parent8aff7dfaef7d18d45f28d1fcbd9078d7edef83f8 (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')
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc17
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc17
-rw-r--r--libstdc++-v3/testsuite/util/testsuite_abi.cc3
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");