From 5db78cac104c0427b023b3a21f98bf302aa736e3 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 4 Jan 2019 11:06:49 +0000 Subject: [PATCH] Avoid spurious test failures when -fno-inline in test flags These tests rely on inlining, so if -fno-inline is added to the compiler flags the tests fail. Use the predefined __NO_INLINE__ macro to detect that situation, and don't bother testing the move assignment. * testsuite/21_strings/basic_string/modifiers/assign/char/ move_assign_optim.cc: Avoid spurious failure when -fno-inline added to test flags. * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/ move_assign_optim.cc: Likewise. From-SVN: r267573 --- libstdc++-v3/ChangeLog | 8 ++++++++ .../modifiers/assign/char/move_assign_optim.cc | 4 +++- .../modifiers/assign/wchar_t/move_assign_optim.cc | 4 +++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 76fc247ad1d..e6a2dc2ba70 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2019-01-04 Jonathan Wakely + + * testsuite/21_strings/basic_string/modifiers/assign/char/ + move_assign_optim.cc: Avoid spurious failure when -fno-inline added + to test flags. + * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/ + move_assign_optim.cc: Likewise. + 2019-01-03 Jonathan Wakely Jakub Jelinek diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc index 6ac54b509df..bbe60e578ca 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc @@ -30,6 +30,8 @@ test01(std::string& target, std::string&& source) // The move assignment operator should be simple enough that the compiler // can see that it never results in a length_error or bad_alloc exception // (which would be turned into std::terminate by the noexcept on the - // assignment operator). + // assignment operator). This is only true when inlining though. +#ifndef __NO_INLINE__ target = std::move(source); +#endif } diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc index 261c6641043..15f3a4bcbe1 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc @@ -30,6 +30,8 @@ test01(std::wstring& target, std::wstring&& source) // The move assignment operator should be simple enough that the compiler // can see that it never results in a length_error or bad_alloc exception // (which would be turned into std::terminate by the noexcept on the - // assignment operator). + // assignment operator). This is only true when inlining though. +#ifndef __NO_INLINE__ target = std::move(source); +#endif } -- 2.30.2