Commit 8695aec8 authored by Yedidya Feldblum's avatar Yedidya Feldblum Committed by Facebook GitHub Bot

Suppress is-constexpr-default-constructible test under Clang 10

Summary:
[Folly] Suppress is-constexpr-default-constructible test for types with non-trivial user-provided (until C++20) or non-constexpr (since C++20) destructors under Clang 10.

Responsible llvm commit: https://github.com/llvm/llvm-project/commit/457226e02a6e.

Related llvm bug report: https://bugs.llvm.org/show_bug.cgi?id=47620. This bug report documents a crash in the compiler, but fails to document deviation from the language spec.

Reviewed By: Mizuchi

Differential Revision: D23862920

fbshipit-source-id: 855db4773ffc062ad9d361feac3709922db7b42d
parent 15523d66
......@@ -497,8 +497,10 @@ constexpr auto kGnuc = 0;
#if __clang__
constexpr auto kIsClang = true;
constexpr auto kClangVerMajor = __clang_major__;
#else
constexpr auto kIsClang = false;
constexpr auto kClangVerMajor = 0;
#endif
#if FOLLY_MICROSOFT_ABI_VER
......
......@@ -433,11 +433,16 @@ TEST(Traits, is_constexpr_default_constructible) {
EXPECT_TRUE(is_constexpr_default_constructible_v<Empty>);
EXPECT_TRUE(is_constexpr_default_constructible<Empty>{});
struct NonTrivialDtor {
~NonTrivialDtor() {}
};
EXPECT_FALSE(is_constexpr_default_constructible_v<NonTrivialDtor>);
EXPECT_FALSE(is_constexpr_default_constructible<NonTrivialDtor>{});
// under clang 10, crash: https://bugs.llvm.org/show_bug.cgi?id=47620
// and, with assertions disabled, expectation failures showing compiler
// deviation from the language spec
if (kClangVerMajor != 10) {
struct NonTrivialDtor {
~NonTrivialDtor() {}
};
EXPECT_FALSE(is_constexpr_default_constructible_v<NonTrivialDtor>);
EXPECT_FALSE(is_constexpr_default_constructible<NonTrivialDtor>{});
}
struct ConstexprCtor {
int x, y;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment