diff options
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"); |