From: David Majnemer Date: Mon, 18 Jul 2016 00:34:58 +0000 (+0000) Subject: [GVNHoist] Some small cleanups X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=326770a316adea6cc8b71b823405b03062aea815;p=llvm [GVNHoist] Some small cleanups No functional change is intended, just trying to clean things up a little. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275743 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/GVNHoist.cpp b/lib/Transforms/Scalar/GVNHoist.cpp index 9c07b1cc46b..16fc4850715 100644 --- a/lib/Transforms/Scalar/GVNHoist.cpp +++ b/lib/Transforms/Scalar/GVNHoist.cpp @@ -257,21 +257,19 @@ public: // Return true when there are users of Def in BB. bool hasMemoryUseOnPath(MemoryAccess *Def, const BasicBlock *BB, const Instruction *OldPt) { - Value::user_iterator UI = Def->user_begin(); - Value::user_iterator UE = Def->user_end(); const BasicBlock *DefBB = Def->getBlock(); const BasicBlock *OldBB = OldPt->getParent(); - for (; UI != UE; ++UI) - if (MemoryUse *U = dyn_cast(*UI)) { - BasicBlock *UBB = U->getBlock(); + for (User *U : Def->users()) + if (auto *MU = dyn_cast(U)) { + BasicBlock *UBB = MU->getBlock(); // Only analyze uses in BB. if (BB != UBB) continue; // A use in the same block as the Def is on the path. if (UBB == DefBB) { - assert(MSSA->locallyDominates(Def, U) && "def not dominating use"); + assert(MSSA->locallyDominates(Def, MU) && "def not dominating use"); return true; } @@ -279,7 +277,7 @@ public: return true; // It is only harmful to hoist when the use is before OldPt. - if (firstInBB(UBB, U->getMemoryInst(), OldPt)) + if (firstInBB(UBB, MU->getMemoryInst(), OldPt)) return true; } @@ -392,7 +390,7 @@ public: return false; if (NewBB == DBB && !MSSA->isLiveOnEntryDef(D)) - if (MemoryUseOrDef *UD = dyn_cast(D)) + if (auto *UD = dyn_cast(D)) if (firstInBB(DBB, NewPt, UD->getMemoryInst())) // Cannot move the load or store to NewPt above its definition in D. return false; @@ -513,7 +511,7 @@ public: // At this point it is not safe to extend the current hoisting to // NewHoistPt: save the hoisting list so far. if (std::distance(Start, II) > 1) - HPL.push_back(std::make_pair(HoistBB, SmallVecInsn(Start, II))); + HPL.push_back({HoistBB, SmallVecInsn(Start, II)}); // Start over from BB. Start = II; @@ -526,17 +524,17 @@ public: // Save the last partition. if (std::distance(Start, II) > 1) - HPL.push_back(std::make_pair(HoistBB, SmallVecInsn(Start, II))); + HPL.push_back({HoistBB, SmallVecInsn(Start, II)}); } // Initialize HPL from Map. void computeInsertionPoints(const VNtoInsns &Map, HoistingPointList &HPL, InsKind K) { - for (VNtoInsns::const_iterator It = Map.begin(); It != Map.end(); ++It) { + for (const auto &Entry : Map) { if (MaxHoistedThreshold != -1 && ++HoistedCtr > MaxHoistedThreshold) return; - const SmallVecInsn &V = It->second; + const SmallVecInsn &V = Entry.second; if (V.size() < 2) continue; @@ -546,7 +544,7 @@ public: if (!hasEH(I->getParent())) InstructionsToHoist.push_back(I); - if (InstructionsToHoist.size()) + if (!InstructionsToHoist.empty()) partitionCandidates(InstructionsToHoist, HPL, K); } } @@ -557,12 +555,10 @@ public: // expression, make sure that all its operands are available at insert point. bool allOperandsAvailable(const Instruction *I, const BasicBlock *HoistPt) const { - for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i) { - const Value *Op = I->getOperand(i); - const Instruction *Inst = dyn_cast(Op); - if (Inst && !DT->dominates(Inst->getParent(), HoistPt)) - return false; - } + for (const Use &Op : I->operands()) + if (const auto *Inst = dyn_cast(&Op)) + if (!DT->dominates(Inst->getParent(), HoistPt)) + return false; return true; } @@ -591,9 +587,9 @@ public: // Check whether the GEP of a ld/st can be synthesized at HoistPt. Instruction *Gep = nullptr; Instruction *Val = nullptr; - if (LoadInst *Ld = dyn_cast(Repl)) + if (auto *Ld = dyn_cast(Repl)) Gep = dyn_cast(Ld->getPointerOperand()); - if (StoreInst *St = dyn_cast(Repl)) { + if (auto *St = dyn_cast(Repl)) { Gep = dyn_cast(St->getPointerOperand()); Val = dyn_cast(St->getValueOperand()); } @@ -699,12 +695,12 @@ public: CallInfo CI; for (BasicBlock *BB : depth_first(&F.getEntryBlock())) { for (Instruction &I1 : *BB) { - if (LoadInst *Load = dyn_cast(&I1)) + if (auto *Load = dyn_cast(&I1)) LI.insert(Load, VN); - else if (StoreInst *Store = dyn_cast(&I1)) + else if (auto *Store = dyn_cast(&I1)) SI.insert(Store, VN); - else if (CallInst *Call = dyn_cast(&I1)) { - if (IntrinsicInst *Intr = dyn_cast(Call)) { + else if (auto *Call = dyn_cast(&I1)) { + if (auto *Intr = dyn_cast(Call)) { if (isa(Intr) || Intr->getIntrinsicID() == Intrinsic::assume) continue; @@ -744,7 +740,7 @@ public: unsigned I = 0; for (const BasicBlock *BB : depth_first(&F.getEntryBlock())) - DFSNumber.insert(std::make_pair(BB, ++I)); + DFSNumber.insert({BB, ++I}); // FIXME: use lazy evaluation of VN to avoid the fix-point computation. while (1) {