summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp8
-rw-r--r--libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp12
-rw-r--r--libcxx/test/support/test_workarounds.h6
3 files changed, 20 insertions, 6 deletions
diff --git a/libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp b/libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp
index 4b04929a6fc..4b0ae15c352 100644
--- a/libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp
+++ b/libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp
@@ -37,8 +37,10 @@ void test_const_lvalue_get() {
{
using V = std::variant<int, const long>;
constexpr V v(42);
-#ifndef __clang__ // Avoid https://bugs.llvm.org/show_bug.cgi?id=15481
+#ifdef TEST_WORKAROUND_CONSTEXPR_IMPLIES_NOEXCEPT
ASSERT_NOEXCEPT(std::get<0>(v));
+#else
+ ASSERT_NOT_NOEXCEPT(std::get<0>(v));
#endif
ASSERT_SAME_TYPE(decltype(std::get<0>(v)), const int &);
static_assert(std::get<0>(v) == 42, "");
@@ -53,8 +55,10 @@ void test_const_lvalue_get() {
{
using V = std::variant<int, const long>;
constexpr V v(42l);
-#ifndef __clang__ // Avoid https://bugs.llvm.org/show_bug.cgi?id=15481
+#ifdef TEST_WORKAROUND_CONSTEXPR_IMPLIES_NOEXCEPT
ASSERT_NOEXCEPT(std::get<1>(v));
+#else
+ ASSERT_NOT_NOEXCEPT(std::get<1>(v));
#endif
ASSERT_SAME_TYPE(decltype(std::get<1>(v)), const long &);
static_assert(std::get<1>(v) == 42, "");
diff --git a/libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp b/libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp
index 316213ed2fa..bd9153671e2 100644
--- a/libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp
+++ b/libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp
@@ -31,24 +31,28 @@ void test_const_lvalue_get() {
{
using V = std::variant<int, const long>;
constexpr V v(42);
-#ifndef __clang__ // Avoid https://bugs.llvm.org/show_bug.cgi?id=15481
+#ifdef TEST_WORKAROUND_CONSTEXPR_IMPLIES_NOEXCEPT
ASSERT_NOEXCEPT(std::get<int>(v));
+#else
+ ASSERT_NOT_NOEXCEPT(std::get<int>(v));
#endif
- ASSERT_SAME_TYPE(decltype(std::get<0>(v)), const int &);
+ ASSERT_SAME_TYPE(decltype(std::get<int>(v)), const int &);
static_assert(std::get<int>(v) == 42, "");
}
{
using V = std::variant<int, const long>;
const V v(42);
ASSERT_NOT_NOEXCEPT(std::get<int>(v));
- ASSERT_SAME_TYPE(decltype(std::get<0>(v)), const int &);
+ ASSERT_SAME_TYPE(decltype(std::get<int>(v)), const int &);
assert(std::get<int>(v) == 42);
}
{
using V = std::variant<int, const long>;
constexpr V v(42l);
-#ifndef __clang__ // Avoid https://bugs.llvm.org/show_bug.cgi?id=15481
+#ifdef TEST_WORKAROUND_CONSTEXPR_IMPLIES_NOEXCEPT
ASSERT_NOEXCEPT(std::get<const long>(v));
+#else
+ ASSERT_NOT_NOEXCEPT(std::get<const long>(v));
#endif
ASSERT_SAME_TYPE(decltype(std::get<const long>(v)), const long &);
static_assert(std::get<const long>(v) == 42, "");
diff --git a/libcxx/test/support/test_workarounds.h b/libcxx/test/support/test_workarounds.h
index 14ec9686139..81350c789d4 100644
--- a/libcxx/test/support/test_workarounds.h
+++ b/libcxx/test/support/test_workarounds.h
@@ -23,4 +23,10 @@
# endif
#endif
+#if defined(TEST_COMPILER_GCC)
+# if __GNUC__ < 9
+# define TEST_WORKAROUND_CONSTEXPR_IMPLIES_NOEXCEPT // GCC PR 87603
+# endif
+#endif
+
#endif // SUPPORT_TEST_WORKAROUNDS_H
OpenPOWER on IntegriCloud