Author: resistor Date: Wed Aug 8 16:39:39 2007 New Revision: 40946 URL: http://llvm.org/viewvc/llvm-project?rev=40946&view=rev Log: Change the None and NonLocal markers in memdep to be const.
Modified: llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp llvm/trunk/lib/Transforms/Scalar/GVN.cpp llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp Modified: llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h?rev=40946&r1=40945&r2=40946&view=diff ============================================================================== --- llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h (original) +++ llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h Wed Aug 8 16:39:39 2007 @@ -32,23 +32,23 @@ class MemoryDependenceAnalysis : public FunctionPass { private: - typedef DenseMap<Instruction*, std::pair<Instruction*, bool> > + typedef DenseMap<Instruction*, std::pair<const Instruction*, bool> > depMapType; depMapType depGraphLocal; - typedef DenseMap<Instruction*, + typedef DenseMap<const Instruction*, SmallPtrSet<Instruction*, 4> > reverseDepMapType; reverseDepMapType reverseDep; - Instruction* getCallSiteDependency(CallSite C, Instruction* start, + const Instruction* getCallSiteDependency(CallSite C, Instruction* start, BasicBlock* block); void nonLocalHelper(Instruction* query, BasicBlock* block, DenseMap<BasicBlock*, Value*>& resp); public: - static Instruction* NonLocal; - static Instruction* None; + static const Instruction* NonLocal; + static const Instruction* None; static char ID; // Class identification, replacement for typeinfo MemoryDependenceAnalysis() : FunctionPass((intptr_t)&ID) {} @@ -70,7 +70,7 @@ /// getDependency - Return the instruction on which a memory operation /// depends, starting with start. - Instruction* getDependency(Instruction* query, Instruction* start = 0, + const Instruction* getDependency(Instruction* query, Instruction* start = 0, BasicBlock* block = 0); void getNonLocalDependency(Instruction* query, Modified: llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp?rev=40946&r1=40945&r2=40946&view=diff ============================================================================== --- llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp (original) +++ llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp Wed Aug 8 16:39:39 2007 @@ -26,8 +26,8 @@ char MemoryDependenceAnalysis::ID = 0; -Instruction* MemoryDependenceAnalysis::NonLocal = (Instruction*)-3; -Instruction* MemoryDependenceAnalysis::None = (Instruction*)-4; +const Instruction* MemoryDependenceAnalysis::NonLocal = (Instruction*)-3; +const Instruction* MemoryDependenceAnalysis::None = (Instruction*)-4; // Register this pass... static RegisterPass<MemoryDependenceAnalysis> X("memdep", @@ -42,7 +42,7 @@ } // Find the dependency of a CallSite -Instruction* MemoryDependenceAnalysis::getCallSiteDependency(CallSite C, Instruction* start, +const Instruction* MemoryDependenceAnalysis::getCallSiteDependency(CallSite C, Instruction* start, BasicBlock* block) { AliasAnalysis& AA = getAnalysis<AliasAnalysis>(); @@ -132,9 +132,9 @@ if (BB != block) { visited.insert(BB); - Instruction* localDep = getDependency(query, 0, BB); + const Instruction* localDep = getDependency(query, 0, BB); if (localDep != NonLocal) { - resp.insert(std::make_pair(BB, localDep)); + resp.insert(std::make_pair(BB, const_cast<Instruction*>(localDep))); stack.pop_back(); continue; @@ -142,9 +142,9 @@ } else if (BB == block && stack.size() > 1) { visited.insert(BB); - Instruction* localDep = getDependency(query, 0, BB); + const Instruction* localDep = getDependency(query, 0, BB); if (localDep != query) - resp.insert(std::make_pair(BB, localDep)); + resp.insert(std::make_pair(BB, const_cast<Instruction*>(localDep))); stack.pop_back(); @@ -164,9 +164,9 @@ if (inserted) continue; else if (!inserted && !predOnStack) { - resp.insert(std::make_pair(BB, None)); + resp.insert(std::make_pair(BB, const_cast<Instruction*>(None))); } else if (!inserted && predOnStack){ - resp.insert(std::make_pair(BB, NonLocal)); + resp.insert(std::make_pair(BB, const_cast<Instruction*>(NonLocal))); } stack.pop_back(); @@ -175,9 +175,9 @@ void MemoryDependenceAnalysis::getNonLocalDependency(Instruction* query, DenseMap<BasicBlock*, Value*>& resp) { - Instruction* localDep = getDependency(query); + const Instruction* localDep = getDependency(query); if (localDep != NonLocal) { - resp.insert(std::make_pair(query->getParent(), localDep)); + resp.insert(std::make_pair(query->getParent(), const_cast<Instruction*>(localDep))); return; } @@ -187,20 +187,20 @@ /// getDependency - Return the instruction on which a memory operation /// depends. The local paramter indicates if the query should only /// evaluate dependencies within the same basic block. -Instruction* MemoryDependenceAnalysis::getDependency(Instruction* query, +const Instruction* MemoryDependenceAnalysis::getDependency(Instruction* query, Instruction* start, BasicBlock* block) { // Start looking for dependencies with the queried inst BasicBlock::iterator QI = query; // Check for a cached result - std::pair<Instruction*, bool> cachedResult = depGraphLocal[query]; + std::pair<const Instruction*, bool> cachedResult = depGraphLocal[query]; // If we have a _confirmed_ cached entry, return it if (cachedResult.second) return cachedResult.first; else if (cachedResult.first && cachedResult.first != NonLocal) // If we have an unconfirmed cached entry, we can start our search from there - QI = cachedResult.first; + QI = const_cast<Instruction*>(cachedResult.first); if (start) QI = start; @@ -342,7 +342,7 @@ /// updating the dependence of instructions that previously depended on it. void MemoryDependenceAnalysis::removeInstruction(Instruction* rem) { // Figure out the new dep for things that currently depend on rem - Instruction* newDep = NonLocal; + const Instruction* newDep = NonLocal; depMapType::iterator depGraphEntry = depGraphLocal.find(rem); // We assume here that it's not in the reverse map if it's not in @@ -352,7 +352,7 @@ if (depGraphEntry->second.first != NonLocal && depGraphEntry->second.second) { // If we have dep info for rem, set them to it - BasicBlock::iterator RI = depGraphEntry->second.first; + BasicBlock::iterator RI = const_cast<Instruction*>(depGraphEntry->second.first); RI++; newDep = RI; } else if (depGraphEntry->second.first == NonLocal && Modified: llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp?rev=40946&r1=40945&r2=40946&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp Wed Aug 8 16:39:39 2007 @@ -121,14 +121,14 @@ // ... to a pointer that has been stored to before... if (last) { - Instruction* dep = MD.getDependency(BBI); + Instruction* dep = const_cast<Instruction*>(MD.getDependency(BBI)); // ... and no other memory dependencies are between them.... while (dep != MemoryDependenceAnalysis::None && dep != MemoryDependenceAnalysis::NonLocal && isa<StoreInst>(dep)) { if (dep != last) { - dep = MD.getDependency(BBI, dep); + dep = const_cast<Instruction*>(MD.getDependency(BBI, dep)); continue; } @@ -154,7 +154,7 @@ if (FreeInst* F = dyn_cast<FreeInst>(BBI)) { if (!deletedStore) MadeChange |= handleFreeWithNonTrivialDependency(F, - MD.getDependency(F), + const_cast<Instruction*>(MD.getDependency(F)), possiblyDead); // No known stores after the free last = 0; Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=40946&r1=40945&r2=40946&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Wed Aug 8 16:39:39 2007 @@ -803,7 +803,7 @@ return false; } else if (I->second == MemoryDependenceAnalysis::NonLocal) { continue; - }else if (StoreInst* S = dyn_cast<StoreInst>(I->second)) { + } else if (StoreInst* S = dyn_cast<StoreInst>(I->second)) { if (S->getPointerOperand() == L->getPointerOperand()) repl[I->first] = S->getOperand(0); else @@ -856,7 +856,7 @@ // ... to a pointer that has been loaded from before... MemoryDependenceAnalysis& MD = getAnalysis<MemoryDependenceAnalysis>(); - Instruction* dep = MD.getDependency(L); + Instruction* dep = const_cast<Instruction*>(MD.getDependency(L)); if (dep == MemoryDependenceAnalysis::NonLocal && L->getParent() != &L->getParent()->getParent()->getEntryBlock()) processNonLocalLoad(L, toErase); @@ -895,7 +895,7 @@ break; } else { - dep = MD.getDependency(L, dep); + dep = const_cast<Instruction*>(MD.getDependency(L, dep)); } } Modified: llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp?rev=40946&r1=40945&r2=40946&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp Wed Aug 8 16:39:39 2007 @@ -80,7 +80,7 @@ LoadInst*& last = lastLoad[pointer]; // ... to a pointer that has been loaded from before... - Instruction* dep = MD.getDependency(BBI); + Instruction* dep = const_cast<Instruction*>(MD.getDependency(BBI)); bool deletedLoad = false; while (dep != MemoryDependenceAnalysis::None && @@ -120,7 +120,7 @@ break; } else { - dep = MD.getDependency(BBI, dep); + dep = const_cast<Instruction*>(MD.getDependency(BBI, dep)); } } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits