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 | 8eda11bd9d0df79942c81d3790db0fb947f33888 (patch) | |
| tree | 95061efbbede6126f7458f113b477b7e649c4757 /llvm/lib/Analysis | |
| parent | dc2999b4dfcfb0b63809a0344a0f212c221f4802 (diff) | |
| download | bcm5719-llvm-8eda11bd9d0df79942c81d3790db0fb947f33888.tar.gz bcm5719-llvm-8eda11bd9d0df79942c81d3790db0fb947f33888.zip | |
now that you can put a PointerIntPair in a SmallPtrSet, remove some
hackish workarounds from memdep
llvm-svn: 67971
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/MemoryDependenceAnalysis.cpp | 32 | 
1 files changed, 15 insertions, 17 deletions
| diff --git a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp index ed95b90cc98..74c962147ce 100644 --- a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp +++ b/llvm/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");    } | 

