[clang] [CIR] Implement isMemcpyEquivalentSpecialMember for trivial copy/move ctors (PR #186700)
Eli Friedman via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 1 13:56:54 PDT 2026
================
@@ -2770,6 +2770,40 @@ bool CXXMethodDecl::isMoveAssignmentOperator() const {
return Context.hasSameUnqualifiedType(ClassType, ParamType);
}
+bool CXXMethodDecl::isCopyOrMoveConstructor() const {
+ if (const auto *Ctor = dyn_cast<CXXConstructorDecl>(this))
+ return Ctor->isCopyOrMoveConstructor();
+ return false;
+}
+
+bool CXXMethodDecl::isCopyOrMoveConstructorOrAssignment() const {
+ return isCopyOrMoveConstructor() || isCopyAssignmentOperator() ||
+ isMoveAssignmentOperator();
+}
+
+bool CXXMethodDecl::isMemcpyEquivalentSpecialMember() const {
+ if (!isCopyOrMoveConstructorOrAssignment())
+ return false;
+
+ const ASTContext &Ctx = getASTContext();
----------------
efriedma-quic wrote:
Please pass in `ASTContext&` instead of calling `getASTContext()`; it's relatively expensive. (We have to walk the DeclContexts to find the TranslationUnitDecl.)
https://github.com/llvm/llvm-project/pull/186700
More information about the cfe-commits
mailing list