diff options
author | Chris Lattner <sabre@nondot.org> | 2009-03-29 00:24:04 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-03-29 00:24:04 +0000 |
commit | 6a0dcc10778468b1556474aa43d4a86a14ab15d7 (patch) | |
tree | a607aa0f24210648143daef1280f6bc48f8f9b47 /lib/Analysis/MemoryDependenceAnalysis.cpp | |
parent | 4d4177b9b3ab634e852be1c0a7565a4ec1c7df93 (diff) |
now that you can put a PointerIntPair in a SmallPtrSet, remove some
hackish workarounds from memdep
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67971 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/MemoryDependenceAnalysis.cpp')
-rw-r--r-- | lib/Analysis/MemoryDependenceAnalysis.cpp | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/lib/Analysis/MemoryDependenceAnalysis.cpp b/lib/Analysis/MemoryDependenceAnalysis.cpp index ed95b90cc9..74c962147c 100644 --- a/lib/Analysis/MemoryDependenceAnalysis.cpp +++ b/lib/Analysis/MemoryDependenceAnalysis.cpp @@ -86,9 +86,9 @@ bool MemoryDependenceAnalysis::runOnFunction(Function &) { /// 'Inst's set in ReverseMap. If the set becomes empty, remove Inst's entry. template <typename KeyTy> static void RemoveFromReverseMap(DenseMap<Instruction*, - SmallPtrSet<KeyTy*, 4> > &ReverseMap, - Instruction *Inst, KeyTy *Val) { - typename DenseMap<Instruction*, SmallPtrSet<KeyTy*, 4> >::iterator + SmallPtrSet<KeyTy, 4> > &ReverseMap, + Instruction *Inst, KeyTy Val) { + typename DenseMap<Instruction*, SmallPtrSet<KeyTy, 4> >::iterator InstIt = ReverseMap.find(Inst); assert(InstIt != ReverseMap.end() && "Reverse map out of sync?"); bool Found = InstIt->second.erase(Val); @@ -560,8 +560,7 @@ GetNonLocalInfoForBlock(Value *Pointer, uint64_t PointeeSize, // Eliminating the dirty entry from 'Cache', so update the reverse info. ValueIsLoadPair CacheKey(Pointer, isLoad); - RemoveFromReverseMap(ReverseNonLocalPtrDeps, ScanPos, - CacheKey.getOpaqueValue()); + RemoveFromReverseMap(ReverseNonLocalPtrDeps, ScanPos, CacheKey); } else { ++NumUncacheNonLocalPtr; } @@ -588,7 +587,7 @@ GetNonLocalInfoForBlock(Value *Pointer, uint64_t PointeeSize, Instruction *Inst = Dep.getInst(); assert(Inst && "Didn't depend on anything?"); ValueIsLoadPair CacheKey(Pointer, isLoad); - ReverseNonLocalPtrDeps[Inst].insert(CacheKey.getOpaqueValue()); + ReverseNonLocalPtrDeps[Inst].insert(CacheKey); return Dep; } @@ -827,7 +826,7 @@ getNonLocalPointerDepFromBB(Value *Pointer, uint64_t PointeeSize, assert(I->second.isNonLocal() && "Should only be here with transparent block"); I->second = MemDepResult::getClobber(BB->begin()); - ReverseNonLocalPtrDeps[BB->begin()].insert(CacheKey.getOpaqueValue()); + ReverseNonLocalPtrDeps[BB->begin()].insert(CacheKey); Result.push_back(*I); break; } @@ -883,7 +882,7 @@ RemoveCachedNonLocalPointerDependencies(ValueIsLoadPair P) { assert(Target->getParent() == PInfo[i].first); // Eliminating the dirty entry from 'Cache', so update the reverse info. - RemoveFromReverseMap(ReverseNonLocalPtrDeps, Target, P.getOpaqueValue()); + RemoveFromReverseMap(ReverseNonLocalPtrDeps, Target, P); } // Remove P from NonLocalPointerDeps (which deletes NonLocalDepInfo). @@ -1030,13 +1029,12 @@ void MemoryDependenceAnalysis::removeInstruction(Instruction *RemInst) { ReverseNonLocalPtrDepTy::iterator ReversePtrDepIt = ReverseNonLocalPtrDeps.find(RemInst); if (ReversePtrDepIt != ReverseNonLocalPtrDeps.end()) { - SmallPtrSet<void*, 4> &Set = ReversePtrDepIt->second; + SmallPtrSet<ValueIsLoadPair, 4> &Set = ReversePtrDepIt->second; SmallVector<std::pair<Instruction*, ValueIsLoadPair>,8> ReversePtrDepsToAdd; - for (SmallPtrSet<void*, 4>::iterator I = Set.begin(), E = Set.end(); - I != E; ++I) { - ValueIsLoadPair P; - P.setFromOpaqueValue(*I); + for (SmallPtrSet<ValueIsLoadPair, 4>::iterator I = Set.begin(), + E = Set.end(); I != E; ++I) { + ValueIsLoadPair P = *I; assert(P.getPointer() != RemInst && "Already removed NonLocalPointerDeps info for RemInst"); @@ -1066,7 +1064,7 @@ void MemoryDependenceAnalysis::removeInstruction(Instruction *RemInst) { while (!ReversePtrDepsToAdd.empty()) { ReverseNonLocalPtrDeps[ReversePtrDepsToAdd.back().first] - .insert(ReversePtrDepsToAdd.back().second.getOpaqueValue()); + .insert(ReversePtrDepsToAdd.back().second); ReversePtrDepsToAdd.pop_back(); } } @@ -1126,10 +1124,10 @@ void MemoryDependenceAnalysis::verifyRemoved(Instruction *D) const { E = ReverseNonLocalPtrDeps.end(); I != E; ++I) { assert(I->first != D && "Inst occurs in rev NLPD map"); - for (SmallPtrSet<void*, 4>::const_iterator II = I->second.begin(), + for (SmallPtrSet<ValueIsLoadPair, 4>::const_iterator II = I->second.begin(), E = I->second.end(); II != E; ++II) - assert(*II != ValueIsLoadPair(D, false).getOpaqueValue() && - *II != ValueIsLoadPair(D, true).getOpaqueValue() && + assert(*II != ValueIsLoadPair(D, false) && + *II != ValueIsLoadPair(D, true) && "Inst occurs in ReverseNonLocalPtrDeps map"); } |