[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