[clang] [LifetimeSafety] Warn on incorrectly placed `[[clang::lifetimebound]]` attributes (PR #196144)
Utkarsh Saxena via cfe-commits
cfe-commits at lists.llvm.org
Sat May 9 00:17:18 PDT 2026
================
@@ -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
More information about the cfe-commits
mailing list