diff options
author | Chris Lattner <sabre@nondot.org> | 2004-06-19 08:42:40 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-06-19 08:42:40 +0000 |
commit | 4db0f8260ab0c6f323b13b672b9d9d5211584a5d (patch) | |
tree | c668fc87d68ee90bcf47162a96d19e0339f8c741 /llvm/lib | |
parent | d31410d82497bcc5f02d968349d171c8d22d0702 (diff) | |
download | bcm5719-llvm-4db0f8260ab0c6f323b13b672b9d9d5211584a5d.tar.gz bcm5719-llvm-4db0f8260ab0c6f323b13b672b9d9d5211584a5d.zip |
Change to use the StableBasicBlockNumbering class
llvm-svn: 14247
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index b25a776f578..d35b457125e 100644 --- a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp +++ b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp @@ -24,6 +24,7 @@ #include "llvm/Function.h" #include "llvm/Constant.h" #include "llvm/Support/CFG.h" +#include "llvm/Support/StableBasicBlockNumbering.h" #include "Support/StringExtras.h" using namespace llvm; @@ -131,12 +132,9 @@ namespace { // Visited - The set of basic blocks the renamer has already visited. std::set<BasicBlock*> Visited; - // BasicBlockNumbering - Holds a numbering of the basic blocks in the - // function in a stable order that does not depend on their address. - std::map<BasicBlock*, unsigned> BasicBlockNumbering; - - // NumberedBasicBlock - Holds the inverse mapping of BasicBlockNumbering. - std::vector<BasicBlock*> NumberedBasicBlock; + // BBNumbers - Contains a stable numbering of basic blocks to avoid + // non-determinstic behavior. + StableBasicBlockNumbering BBNumbers; public: PromoteMem2Reg(const std::vector<AllocaInst*> &A, DominatorTree &dt, @@ -288,13 +286,7 @@ void PromoteMem2Reg::run() { // If we haven't computed a numbering for the BB's in the function, do so // now. - if (NumberedBasicBlock.empty()) { - unsigned n = 0; - for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I, ++n) { - NumberedBasicBlock.push_back(I); - BasicBlockNumbering[I] = n; - } - } + BBNumbers.compute(F); // Compute the locations where PhiNodes need to be inserted. Look at the // dominance frontier of EACH basic-block we have a write in. @@ -318,13 +310,13 @@ void PromoteMem2Reg::run() { // processing blocks in order of the occurance in the function. for (DominanceFrontier::DomSetType::iterator P = S.begin(),PE = S.end(); P != PE; ++P) - DFBlocks.push_back(BasicBlockNumbering[*P]); + DFBlocks.push_back(BBNumbers.getNumber(*P)); // Sort by which the block ordering in the function. std::sort(DFBlocks.begin(), DFBlocks.end()); for (unsigned i = 0, e = DFBlocks.size(); i != e; ++i) { - BasicBlock *BB = NumberedBasicBlock[DFBlocks[i]]; + BasicBlock *BB = BBNumbers.getBlock(DFBlocks[i]); if (QueuePhiNode(BB, AllocaNum, CurrentVersion, InsertedPHINodes)) DefiningBlocks.push_back(BB); } |