[clang] [llvm] [clang] Implement lifetime analysis for lifetime_capture_by(X) (PR #115921)
Utkarsh Saxena via cfe-commits
cfe-commits at lists.llvm.org
Sun Nov 17 23:39:34 PST 2024
================
@@ -1110,13 +1117,14 @@ static bool shouldRunGSLAssignmentAnalysis(const Sema &SemaRef,
isAssignmentOperatorLifetimeBound(Entity.AssignmentOperator)));
}
-static void checkExprLifetimeImpl(Sema &SemaRef,
- const InitializedEntity *InitEntity,
- const InitializedEntity *ExtendingEntity,
- LifetimeKind LK,
- const AssignedEntity *AEntity, Expr *Init) {
- assert((AEntity && LK == LK_Assignment) ||
- (InitEntity && LK != LK_Assignment));
+static void
+checkExprLifetimeImpl(Sema &SemaRef, const InitializedEntity *InitEntity,
+ const InitializedEntity *ExtendingEntity, LifetimeKind LK,
+ const AssignedEntity *AEntity,
+ const CapturingEntity *CapEntity, Expr *Init) {
+ assert(!AEntity || LK == LK_Assignment);
+ assert(!CapEntity || LK == LK_LifetimeCapture);
+ assert(!InitEntity || (LK != LK_Assignment && LK != LK_LifetimeCapture));
----------------
usx95 wrote:
Yeah. That is a valid concern. I had previously proposed to change this to a class and have separate member functions instead of passing these lambdas in each function call (specially the temporary visitor).
This was added as a FIXME just few lines below:
```
// FIXME: consider moving the TemporaryVisitor and visitLocalsRetained*
// functions to a dedicated class.
```
This is a larger refactoring. I prefer to do this in a separate PR.
https://github.com/llvm/llvm-project/pull/115921
More information about the cfe-commits
mailing list