Author: dpatel Date: Fri Jul 27 14:13:43 2007 New Revision: 40564 URL: http://llvm.org/viewvc/llvm-project?rev=40564&view=rev Log: Fix edge cases in handling basic block split.
Modified: llvm/trunk/lib/VMCore/Dominators.cpp Modified: llvm/trunk/lib/VMCore/Dominators.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Dominators.cpp?rev=40564&r1=40563&r2=40564&view=diff ============================================================================== --- llvm/trunk/lib/VMCore/Dominators.cpp (original) +++ llvm/trunk/lib/VMCore/Dominators.cpp Fri Jul 27 14:13:43 2007 @@ -616,7 +616,11 @@ PI != PE; ++PI) PredBlocks.push_back(*PI); - assert(!PredBlocks.empty() && "No predblocks??"); + if (PredBlocks.empty()) + // If NewBB does not have any predecessors then it is a entry block. + // In this case, NewBB and its successor NewBBSucc dominates all + // other blocks. + return; DominatorTree &DT = getAnalysis<DominatorTree>(); bool NewBBDominatesNewBBSucc = true; @@ -643,8 +647,13 @@ else ++SetI; } - - addBasicBlock(NewBB, Set); + + DominanceFrontier::iterator NewBBI = find(NewBB); + if (NewBBI != end()) { + DominanceFrontier::DomSetType NewBBSet = NewBBI->second; + NewBBSet.insert(Set.begin(), Set.end()); + } else + addBasicBlock(NewBB, Set); } } else { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits