This revision was automatically updated to reflect the committed changes. Closed by commit rG4de66e8c4434: [clang] __is_trivially_equality_comparable should return false for arrays (authored by philnik).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D153737/new/ https://reviews.llvm.org/D153737 Files: clang/lib/AST/Type.cpp clang/test/SemaCXX/type-traits.cpp Index: clang/test/SemaCXX/type-traits.cpp =================================================================== --- clang/test/SemaCXX/type-traits.cpp +++ clang/test/SemaCXX/type-traits.cpp @@ -3110,7 +3110,7 @@ static_assert(!__is_trivially_equality_comparable(void), ""); static_assert(__is_trivially_equality_comparable(int), ""); static_assert(!__is_trivially_equality_comparable(int[]), ""); -static_assert(__is_trivially_equality_comparable(int[3]), ""); +static_assert(!__is_trivially_equality_comparable(int[3]), ""); static_assert(!__is_trivially_equality_comparable(float), ""); static_assert(!__is_trivially_equality_comparable(double), ""); static_assert(!__is_trivially_equality_comparable(long double), ""); @@ -3134,6 +3134,13 @@ }; static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparable), ""); +struct TriviallyEqualityComparableContainsArray { + int a[4]; + + bool operator==(const TriviallyEqualityComparableContainsArray&) const = default; +}; +static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparableContainsArray)); + struct TriviallyEqualityComparableNonTriviallyCopyable { TriviallyEqualityComparableNonTriviallyCopyable(const TriviallyEqualityComparableNonTriviallyCopyable&); ~TriviallyEqualityComparableNonTriviallyCopyable(); Index: clang/lib/AST/Type.cpp =================================================================== --- clang/lib/AST/Type.cpp +++ clang/lib/AST/Type.cpp @@ -2684,7 +2684,7 @@ const ASTContext &Context) const { QualType CanonicalType = getCanonicalType(); if (CanonicalType->isIncompleteType() || CanonicalType->isDependentType() || - CanonicalType->isEnumeralType()) + CanonicalType->isEnumeralType() || CanonicalType->isArrayType()) return false; if (const auto *RD = CanonicalType->getAsCXXRecordDecl()) {
Index: clang/test/SemaCXX/type-traits.cpp =================================================================== --- clang/test/SemaCXX/type-traits.cpp +++ clang/test/SemaCXX/type-traits.cpp @@ -3110,7 +3110,7 @@ static_assert(!__is_trivially_equality_comparable(void), ""); static_assert(__is_trivially_equality_comparable(int), ""); static_assert(!__is_trivially_equality_comparable(int[]), ""); -static_assert(__is_trivially_equality_comparable(int[3]), ""); +static_assert(!__is_trivially_equality_comparable(int[3]), ""); static_assert(!__is_trivially_equality_comparable(float), ""); static_assert(!__is_trivially_equality_comparable(double), ""); static_assert(!__is_trivially_equality_comparable(long double), ""); @@ -3134,6 +3134,13 @@ }; static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparable), ""); +struct TriviallyEqualityComparableContainsArray { + int a[4]; + + bool operator==(const TriviallyEqualityComparableContainsArray&) const = default; +}; +static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparableContainsArray)); + struct TriviallyEqualityComparableNonTriviallyCopyable { TriviallyEqualityComparableNonTriviallyCopyable(const TriviallyEqualityComparableNonTriviallyCopyable&); ~TriviallyEqualityComparableNonTriviallyCopyable(); Index: clang/lib/AST/Type.cpp =================================================================== --- clang/lib/AST/Type.cpp +++ clang/lib/AST/Type.cpp @@ -2684,7 +2684,7 @@ const ASTContext &Context) const { QualType CanonicalType = getCanonicalType(); if (CanonicalType->isIncompleteType() || CanonicalType->isDependentType() || - CanonicalType->isEnumeralType()) + CanonicalType->isEnumeralType() || CanonicalType->isArrayType()) return false; if (const auto *RD = CanonicalType->getAsCXXRecordDecl()) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits