X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTransforms%2FScalar%2FEarlyCSE.cpp;h=de539d53a4f55b3adf2c07da85d42d53c3031d0c;hb=45ef74f29c3cbccc33cbf05e0c26bdc029ce997b;hp=008b0e5ffb3a1021a7068aeaac9ba235408f0296;hpb=c87636435d2ae3ac674c81695ac9ae88b448e9e7;p=oota-llvm.git diff --git a/lib/Transforms/Scalar/EarlyCSE.cpp b/lib/Transforms/Scalar/EarlyCSE.cpp index 008b0e5ffb3..de539d53a4f 100644 --- a/lib/Transforms/Scalar/EarlyCSE.cpp +++ b/lib/Transforms/Scalar/EarlyCSE.cpp @@ -264,7 +264,6 @@ namespace { /// expected that a later pass of GVN will catch the interesting/hard cases. class EarlyCSE { public: - Function &F; const TargetLibraryInfo &TLI; const TargetTransformInfo &TTI; DominatorTree &DT; @@ -291,12 +290,12 @@ public: /// after every possibly writing memory operation, which ensures that we only /// CSE loads with other loads that have no intervening store. struct LoadValue { - Value *data; - unsigned generation; - int matchingId; - LoadValue() : data(nullptr), generation(0), matchingId(-1) {} - LoadValue(Value *data, unsigned generation, unsigned matchingId) - : data(data), generation(generation), matchingId(matchingId) {} + Value *Data; + unsigned Generation; + int MatchingId; + LoadValue() : Data(nullptr), Generation(0), MatchingId(-1) {} + LoadValue(Value *Data, unsigned Generation, unsigned MatchingId) + : Data(Data), Generation(Generation), MatchingId(MatchingId) {} }; typedef RecyclingAllocator> @@ -316,10 +315,9 @@ public: unsigned CurrentGeneration; /// \brief Set up the EarlyCSE runner for a particular function. - EarlyCSE(Function &F, const TargetLibraryInfo &TLI, - const TargetTransformInfo &TTI, DominatorTree &DT, - AssumptionCache &AC) - : F(F), TLI(TLI), TTI(TTI), DT(DT), AC(AC), CurrentGeneration(0) {} + EarlyCSE(const TargetLibraryInfo &TLI, const TargetTransformInfo &TTI, + DominatorTree &DT, AssumptionCache &AC) + : TLI(TLI), TTI(TTI), DT(DT), AC(AC), CurrentGeneration(0) {} bool run(); @@ -505,7 +503,7 @@ bool EarlyCSE::processNode(DomTreeNode *Node) { // See if any instructions in the block can be eliminated. If so, do it. If // not, add them to AvailableValues. for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E;) { - Instruction *Inst = I++; + Instruction *Inst = &*I++; // Dead instructions should just be removed. if (isInstructionTriviallyDead(Inst, &TLI)) { @@ -568,12 +566,12 @@ bool EarlyCSE::processNode(DomTreeNode *Node) { // If we have an available version of this load, and if it is the right // generation, replace this instruction. LoadValue InVal = AvailableLoads.lookup(MemInst.getPtr()); - if (InVal.data != nullptr && InVal.generation == CurrentGeneration && - InVal.matchingId == MemInst.getMatchingId()) { - Value *Op = getOrCreateResult(InVal.data, Inst->getType()); + if (InVal.Data != nullptr && InVal.Generation == CurrentGeneration && + InVal.MatchingId == MemInst.getMatchingId()) { + Value *Op = getOrCreateResult(InVal.Data, Inst->getType()); if (Op != nullptr) { DEBUG(dbgs() << "EarlyCSE CSE LOAD: " << *Inst - << " to: " << *InVal.data << '\n'); + << " to: " << *InVal.Data << '\n'); if (!Inst->use_empty()) Inst->replaceAllUsesWith(Op); Inst->eraseFromParent(); @@ -735,7 +733,7 @@ PreservedAnalyses EarlyCSEPass::run(Function &F, auto &DT = AM->getResult(F); auto &AC = AM->getResult(F); - EarlyCSE CSE(F, TLI, TTI, DT, AC); + EarlyCSE CSE(TLI, TTI, DT, AC); if (!CSE.run()) return PreservedAnalyses::all(); @@ -772,7 +770,7 @@ public: auto &DT = getAnalysis().getDomTree(); auto &AC = getAnalysis().getAssumptionCache(F); - EarlyCSE CSE(F, TLI, TTI, DT, AC); + EarlyCSE CSE(TLI, TTI, DT, AC); return CSE.run(); }