================
@@ -260,10 +260,26 @@ class LifetimeChecker {
SemaHelper->reportUseAfterInvalidation(
InvalidatedPVD, UF->getUseExpr(), Warning.InvalidatedByExpr);
- } else
+ } else {
// Scope-based expiry (use-after-scope).
+
+ llvm::SmallVector<OriginID> OriginFlowChain;
+
+ for (const OriginList *Cur = UF->getUsedOrigins(); Cur;
+ Cur = Cur->peelOuterOrigin())
+ if (LoanPropagation.getLoans(Cur->getOuterOriginID(), UF)
+ .contains(LID)) {
+ OriginFlowChain = LoanPropagation.buildOriginFlowChain(
+ FactMgr, UF, Cur->getOuterOriginID(), LID);
+ break;
+ }
----------------
usx95 wrote:
I think we can move this into LoanPropagation as well. I suggest having an
overload
`llvm::SmallVector<OriginID> LoanPropagation::buildOriginFlowChain(const
UseFact* UF, LoanID LID)` which can abstract this.
https://github.com/llvm/llvm-project/pull/199345
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits