diff options
author | Chris Lattner <sabre@nondot.org> | 2007-08-04 02:21:22 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-08-04 02:21:22 +0000 |
commit | ae1e00eb3628f190f2af8987cc95eadec2c0a12a (patch) | |
tree | 9ae09ad9ad0154db44470aab26ee1159c9764d23 /llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp | |
parent | 9181801bb7d3c6ac18b4b05acf08a1405c2ffb5d (diff) | |
download | bcm5719-llvm-ae1e00eb3628f190f2af8987cc95eadec2c0a12a.tar.gz bcm5719-llvm-ae1e00eb3628f190f2af8987cc95eadec2c0a12a.zip |
switch from using a std::set to using a SmallPtrSet. This speeds up the
testcase in PR1432 from 6.33s to 2.90s (2.22x)
llvm-svn: 40810
Diffstat (limited to 'llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index 5ec5d182c77..8fb9124a5f6 100644 --- a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp +++ b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp @@ -534,7 +534,7 @@ void PromoteMem2Reg::RewriteSingleStoreAlloca(AllocaInst *AI, StoreInst *OnlyStore = Info.OnlyStore; // Be aware of loads before the store. - std::set<BasicBlock*> ProcessedBlocks; + SmallPtrSet<BasicBlock*, 32> ProcessedBlocks; for (unsigned i = 0, e = Info.UsingBlocks.size(); i != e; ++i) { // If the store dominates the block and if we haven't processed it yet, // do so now. @@ -542,7 +542,7 @@ void PromoteMem2Reg::RewriteSingleStoreAlloca(AllocaInst *AI, continue; BasicBlock *UseBlock = Info.UsingBlocks[i]; - if (!ProcessedBlocks.insert(UseBlock).second) + if (!ProcessedBlocks.insert(UseBlock)) continue; // If the use and store are in the same block, do a quick scan to @@ -559,7 +559,7 @@ void PromoteMem2Reg::RewriteSingleStoreAlloca(AllocaInst *AI, // Otherwise, if this is a different block or if all uses happen // after the store, do a simple linear scan to replace loads with // the stored value. - for (BasicBlock::iterator I = UseBlock->begin(),E = UseBlock->end(); + for (BasicBlock::iterator I = UseBlock->begin(), E = UseBlock->end(); I != E; ) { if (LoadInst *LI = dyn_cast<LoadInst>(I++)) { if (LI->getOperand(0) == AI) { |