[clang] [LifetimeSafety] Implement multi-level origins (PR #168344)

Utkarsh Saxena via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 8 06:56:26 PST 2025


================
@@ -155,18 +155,19 @@ class OriginEscapesFact : public Fact {
 
 class UseFact : public Fact {
   const Expr *UseExpr;
-  OriginID OID;
+  // The origins of the expression being used.
+  llvm::SmallVector<OriginID, 1> OIDs;
   // True if this use is a write operation (e.g., left-hand side of assignment).
   // Write operations are exempted from use-after-free checks.
   bool IsWritten = false;
 
 public:
   static bool classof(const Fact *F) { return F->getKind() == Kind::Use; }
 
-  UseFact(const Expr *UseExpr, OriginManager &OM)
-      : Fact(Kind::Use), UseExpr(UseExpr), OID(OM.get(*UseExpr)) {}
+  UseFact(const Expr *UseExpr, llvm::ArrayRef<OriginID> OIDs)
----------------
usx95 wrote:

Done.

https://github.com/llvm/llvm-project/pull/168344


More information about the cfe-commits mailing list