mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
Do not add unreachable code to a natural loop!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9377 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d073ea0053
commit
59dc17873d
@ -151,11 +151,14 @@ Loop *LoopInfo::ConsiderForLoop(BasicBlock *BB, const DominatorSet &DS) {
|
||||
Loop *L = new Loop(BB);
|
||||
BBMap[BB] = L;
|
||||
|
||||
BasicBlock *EntryBlock = &BB->getParent()->getEntryBlock();
|
||||
|
||||
while (!TodoStack.empty()) { // Process all the nodes in the loop
|
||||
BasicBlock *X = TodoStack.back();
|
||||
TodoStack.pop_back();
|
||||
|
||||
if (!L->contains(X)) { // As of yet unprocessed??
|
||||
if (!L->contains(X) && // As of yet unprocessed??
|
||||
DS.dominates(EntryBlock, X)) { // X is reachable from entry block?
|
||||
// Check to see if this block already belongs to a loop. If this occurs
|
||||
// then we have a case where a loop that is supposed to be a child of the
|
||||
// current loop was processed before the current loop. When this occurs,
|
||||
|
Loading…
x
Reference in New Issue
Block a user