diff options
author | Chris Lattner <sabre@nondot.org> | 2008-11-29 21:33:22 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-11-29 21:33:22 +0000 |
commit | 1c6b62eb4d0d21fd5140e63f05b0d5ad002588cb (patch) | |
tree | 1cb4593c3da7b40c1ad463ebc550a40c7c299f8c /llvm/lib/Analysis/MemoryDependenceAnalysis.cpp | |
parent | b8ec75bc3546987d1b5ef3d572dcd2cd82dce9fc (diff) | |
download | bcm5719-llvm-1c6b62eb4d0d21fd5140e63f05b0d5ad002588cb.tar.gz bcm5719-llvm-1c6b62eb4d0d21fd5140e63f05b0d5ad002588cb.zip |
Change MemDep::getNonLocalDependency to return its results as
a smallvector instead of a DenseMap. This speeds up GVN by 5%
on 403.gcc.
llvm-svn: 60255
Diffstat (limited to 'llvm/lib/Analysis/MemoryDependenceAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/MemoryDependenceAnalysis.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp index f59be5ec03b..099d43492cd 100644 --- a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp +++ b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp @@ -104,8 +104,10 @@ getCallSiteDependency(CallSite C, BasicBlock::iterator ScanIt, /// This method assumes the instruction returns a "nonlocal" dependency /// within its own block. /// -void MemoryDependenceAnalysis::getNonLocalDependency(Instruction *QueryInst, - DenseMap<BasicBlock*, MemDepResult> &Result) { +void MemoryDependenceAnalysis:: +getNonLocalDependency(Instruction *QueryInst, + SmallVectorImpl<std::pair<BasicBlock*, + MemDepResult> > &Result) { assert(getDependency(QueryInst).isNonLocal() && "getNonLocalDependency should only be used on insts with non-local deps!"); DenseMap<BasicBlock*, DepResultTy> &Cache = NonLocalDeps[QueryInst]; @@ -128,10 +130,7 @@ void MemoryDependenceAnalysis::getNonLocalDependency(Instruction *QueryInst, } else { // Seed DirtyBlocks with each of the preds of QueryInst's block. BasicBlock *QueryBB = QueryInst->getParent(); - // FIXME: use range insertion/append. - for (pred_iterator PI = pred_begin(QueryBB), E = pred_end(QueryBB); - PI != E; ++PI) - DirtyBlocks.push_back(*PI); + DirtyBlocks.append(pred_begin(QueryBB), pred_end(QueryBB)); NumUncacheNonlocal++; } @@ -173,7 +172,7 @@ void MemoryDependenceAnalysis::getNonLocalDependency(Instruction *QueryInst, // Copy the result into the output set. for (DenseMap<BasicBlock*, DepResultTy>::iterator I = Cache.begin(), E = Cache.end(); I != E; ++I) - Result[I->first] = ConvToResult(I->second); + Result.push_back(std::make_pair(I->first, ConvToResult(I->second))); } /// getDependency - Return the instruction on which a memory operation |