================
@@ -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

Reply via email to