From: Devang Patel Date: Wed, 12 Jan 2011 19:12:45 +0000 (+0000) Subject: Use SmallVector instead of SmallPtrSet and avoid non-deterministic behavior. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=85bbd576ea3078a7cd9d8a17228f4c2dce35be2c;p=oota-llvm.git Use SmallVector instead of SmallPtrSet and avoid non-deterministic behavior. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123318 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/LoopDeletion.cpp b/lib/Transforms/Scalar/LoopDeletion.cpp index eddad3e426a..b60f0c38bbc 100644 --- a/lib/Transforms/Scalar/LoopDeletion.cpp +++ b/lib/Transforms/Scalar/LoopDeletion.cpp @@ -194,13 +194,13 @@ bool LoopDeletion::runOnLoop(Loop* L, LPPassManager& LPM) { // be deleted from the reference counting scheme. DominatorTree& DT = getAnalysis(); DominanceFrontier* DF = getAnalysisIfAvailable(); - SmallPtrSet ChildNodes; + SmallVector ChildNodes; for (Loop::block_iterator LI = L->block_begin(), LE = L->block_end(); LI != LE; ++LI) { // Move all of the block's children to be children of the preheader, which // allows us to remove the domtree entry for the block. - ChildNodes.insert(DT[*LI]->begin(), DT[*LI]->end()); - for (SmallPtrSet::iterator DI = ChildNodes.begin(), + ChildNodes.insert(ChildNodes.begin(), DT[*LI]->begin(), DT[*LI]->end()); + for (SmallVector::iterator DI = ChildNodes.begin(), DE = ChildNodes.end(); DI != DE; ++DI) { DT.changeImmediateDominator(*DI, DT[preheader]); if (DF) DF->changeImmediateDominator((*DI)->getBlock(), preheader, &DT);