[clang] [LifetimeSafety] Introduce buildOriginFlowChain for use-after-scope (PR #199345)
Utkarsh Saxena via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 2 04:15:46 PDT 2026
================
@@ -289,4 +289,21 @@ llvm::SmallVector<OriginID> LoanPropagationAnalysis::buildOriginFlowChain(
// implemented.
return {};
}
+
+llvm::SmallVector<OriginID>
+LoanPropagationAnalysis::buildOriginFlowChain(const FactManager &FactMgr,
+ const UseFact *UF,
+ const LoanID TargetLoan) const {
+ llvm::SmallVector<OriginID> OriginFlowChain;
+
+ for (const OriginList *Cur = UF->getUsedOrigins(); Cur;
+ Cur = Cur->peelOuterOrigin())
+ if (getLoans(Cur->getOuterOriginID(), UF).contains(TargetLoan)) {
+ OriginFlowChain = buildOriginFlowChain(
+ FactMgr, UF, Cur->getOuterOriginID(), TargetLoan);
+ break;
+ }
----------------
usx95 wrote:
nit: use early `return` instead of `break`
```cpp
for (const OriginList *Cur = UF->getUsedOrigins(); Cur;
Cur = Cur->peelOuterOrigin())
if (getLoans(Cur->getOuterOriginID(), UF).contains(TargetLoan))
return buildOriginFlowChain(FactMgr, UF, Cur->getOuterOriginID(), TargetLoan);
return {};
```
https://github.com/llvm/llvm-project/pull/199345
More information about the cfe-commits
mailing list