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:
Chris Lattner 2003-10-22 16:41:21 +00:00
parent d073ea0053
commit 59dc17873d

View File

@ -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,