================
@@ -358,6 +362,21 @@ class LifetimeChecker {
}
}
+ void reportLifetimeboundViolations() {
+ if (!isa<FunctionDecl>(FD))
+ return;
+ for (const ParmVarDecl *PVD : cast<FunctionDecl>(FD)->parameters()) {
+ if (!PVD->hasAttr<LifetimeBoundAttr>())
+ continue;
+ bool isImplicit = PVD->getAttr<LifetimeBoundAttr>()->isImplicit();
+ bool Escapes = VerifiedLiftimeboundEscapes.contains(PVD);
+ if (isImplicit && !Escapes && !isInStlNamespace(FD))
+ assert(false && "Implicit lifetimebound parameters should be
verified");
+ if (!isImplicit && !Escapes)
----------------
usx95 wrote:
nit:
`assert((!isImplicit || Escapes || isInStlNamespace(FD)) &&"Implicit
lifetimebound parameters should escape through return");`
https://github.com/llvm/llvm-project/pull/196144
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits