mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-04 02:24:29 +00:00
Fix an oversight in isPotentiallyReachable where we wouldn't do any CFG-walking
to find loops if the From and To instructions were in the same block. Refactor the code a little now that we need to fill to start the CFG-walking algorithm with more than one starting basic block sometimes. Special thanks to Andrew Trick for catching an error in my understanding of natural loops in code review. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188236 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -49,6 +49,9 @@ unsigned GetSuccessorNumber(BasicBlock *BB, BasicBlock *Succ);
|
||||
bool isCriticalEdge(const TerminatorInst *TI, unsigned SuccNum,
|
||||
bool AllowIdenticalEdges = false);
|
||||
|
||||
/// \brief Determine whether instruction 'To' is reachable from 'From',
|
||||
/// returning true if uncertain.
|
||||
///
|
||||
/// Determine whether there is a path from From to To within a single function.
|
||||
/// Returns false only if we can prove that once 'From' has been executed then
|
||||
/// 'To' can not be executed. Conservatively returns true.
|
||||
@ -64,6 +67,15 @@ bool isCriticalEdge(const TerminatorInst *TI, unsigned SuccNum,
|
||||
bool isPotentiallyReachable(const Instruction *From, const Instruction *To,
|
||||
DominatorTree *DT = 0, LoopInfo *LI = 0);
|
||||
|
||||
/// \brief Determine whether block 'To' is reachable from 'From', returning
|
||||
/// true if uncertain.
|
||||
///
|
||||
/// Determine whether there is a path from From to To within a single function.
|
||||
/// Returns false only if we can prove that once 'From' has been reached then
|
||||
/// 'To' can not be executed. Conservatively returns true.
|
||||
bool isPotentiallyReachable(const BasicBlock *From, const BasicBlock *To,
|
||||
DominatorTree *DT = 0, LoopInfo *LI = 0);
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user