[clang] [CIR] Upstream support for operator assign (PR #145979)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 27 06:32:00 PDT 2025
================
@@ -258,6 +258,30 @@ void CIRGenFunction::emitDelegateCXXConstructorCall(
/*Delegating=*/true, thisAddr, delegateArgs, loc);
}
+void CIRGenFunction::emitImplicitAssignmentOperatorBody(FunctionArgList &args) {
+ const auto *assignOp = cast<CXXMethodDecl>(curGD.getDecl());
+ const Stmt *rootS = assignOp->getBody();
+ assert(isa<CompoundStmt>(rootS) &&
+ "Body of an implicit assignment operator should be compound stmt.");
+ const auto *rootCS = cast<CompoundStmt>(rootS);
+
+ // LexicalScope Scope(*this, RootCS->getSourceRange());
+ // FIXME(cir): add all of the below under a new scope.
+
+ assert(!cir::MissingFeatures::incrementProfileCounter());
+ // Classic codegen uses a special class to attempt to replace member
+ // initializers with memcpy. We could possibly defer that to the
+ // lowering or optimization phases to keep the memory accesses more
+ // explicit. For now, we don't insert memcpy at all, though in some
+ // cases the AST contains a call to memcpy.
----------------
erichkeane wrote:
FWIW, this is another case where CIR should be more expressive, and the FE shouldn't be doing this calculation.
https://github.com/llvm/llvm-project/pull/145979
More information about the cfe-commits
mailing list