================
@@ -202,53 +202,75 @@ class AnalysisImpl
return getLoans(getState(P), OID);
}
- llvm::SmallVector<OriginID>
- buildOriginFlowChain(ProgramPoint StartPoint, const OriginID StartOID,
- const LoanID TargetLoan) const {
+ llvm::SmallVector<OriginID> buildOriginFlowChain(ProgramPoint StartPoint,
+ const OriginID StartOID,
+ const LoanID TargetLoan,
+ const CFG *Cfg) const {
assert(getLoans(StartOID, StartPoint).contains(TargetLoan) &&
"TargetLoan must be present in the StartOID at the StartPoint");
+ DEBUG_WITH_TYPE("LifetimeBuildOriginFlow",
+ llvm::dbgs()
+ << "==========================================\n");
+ DEBUG_WITH_TYPE("LifetimeBuildOriginFlow",
+ llvm::dbgs() << " Lifetime Analysis buildOriginFlow\n");
+ DEBUG_WITH_TYPE("LifetimeBuildOriginFlow",
+ llvm::dbgs()
+ << "==========================================\n");
+ DEBUG_WITH_TYPE("LifetimeBuildOriginFlow",
+ llvm::dbgs() << "StartOriginID: " << StartOID
+ << ", TargetLoanID: " << TargetLoan <<
"\n\n");
+
+ const CFGBlock *EndBlock = nullptr;
+ size_t BlockID = FactMgr.getBlockID(StartPoint);
+ for (const CFGBlock *Block : *Cfg)
+ if (Block->getBlockID() == BlockID) {
+ EndBlock = Block;
+ break;
+ }
+
OriginID CurrOID = StartOID;
llvm::SmallVector<OriginID> OriginFlowChain;
- llvm::ArrayRef<const Fact *> Facts =
FactMgr.getBlockContaining(StartPoint);
- const auto *StartIt = llvm::find(Facts, StartPoint);
- assert(StartIt != Facts.end());
+ std::queue<const CFGBlock *> PendingState;
----------------
NeKon69 wrote:
I don't really like this variable name.. Maybe `PendingBlocks`?
https://github.com/llvm/llvm-project/pull/204592
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits