philnik created this revision. philnik added a reviewer: aaron.ballman. Herald added a project: All. philnik requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D150072 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 @@ -3134,6 +3134,14 @@ }; static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparable), ""); +struct TriviallyEqualityComparableNonTriviallyCopyable { + TriviallyEqualityComparableNonTriviallyCopyable(const TriviallyEqualityComparableNonTriviallyCopyable&); + ~TriviallyEqualityComparableNonTriviallyCopyable(); + bool operator==(const TriviallyEqualityComparableNonTriviallyCopyable&) const = default; + int i; +}; +static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparableNonTriviallyCopyable)); + struct NotTriviallyEqualityComparableHasPadding { short i; int j; Index: clang/lib/AST/Type.cpp =================================================================== --- clang/lib/AST/Type.cpp +++ clang/lib/AST/Type.cpp @@ -2663,7 +2663,8 @@ return false; } - return Context.hasUniqueObjectRepresentations(CanonicalType); + return Context.hasUniqueObjectRepresentations( + CanonicalType, /*CheckIfTriviallyCopyable=*/false); } bool QualType::isNonWeakInMRRWithObjCWeak(const ASTContext &Context) const {
Index: clang/test/SemaCXX/type-traits.cpp =================================================================== --- clang/test/SemaCXX/type-traits.cpp +++ clang/test/SemaCXX/type-traits.cpp @@ -3134,6 +3134,14 @@ }; static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparable), ""); +struct TriviallyEqualityComparableNonTriviallyCopyable { + TriviallyEqualityComparableNonTriviallyCopyable(const TriviallyEqualityComparableNonTriviallyCopyable&); + ~TriviallyEqualityComparableNonTriviallyCopyable(); + bool operator==(const TriviallyEqualityComparableNonTriviallyCopyable&) const = default; + int i; +}; +static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparableNonTriviallyCopyable)); + struct NotTriviallyEqualityComparableHasPadding { short i; int j; Index: clang/lib/AST/Type.cpp =================================================================== --- clang/lib/AST/Type.cpp +++ clang/lib/AST/Type.cpp @@ -2663,7 +2663,8 @@ return false; } - return Context.hasUniqueObjectRepresentations(CanonicalType); + return Context.hasUniqueObjectRepresentations( + CanonicalType, /*CheckIfTriviallyCopyable=*/false); } bool QualType::isNonWeakInMRRWithObjCWeak(const ASTContext &Context) const {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits