<div dir="ltr"><div>It's a combination of OCD and ignorance. :)<br></div><div>Hoping it makes life easier for anyone else who stumbles in here in the future...which very well could be me again.<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 14, 2016 at 5:13 PM, Mehdi Amini <span dir="ltr"><<a href="mailto:mehdi.amini@apple.com" target="_blank">mehdi.amini@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Sanjay,<br>
<br>
Thanks for all the cleanup commits recently, appreciated!<br>
I often lack courage to tackle it :)<br>
<br>
—<br>
<span class="HOEnZb"><font color="#888888">Mehdi<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> On Jan 14, 2016, at 4:08 PM, Sanjay Patel via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
><br>
> Author: spatel<br>
> Date: Thu Jan 14 18:08:10 2016<br>
> New Revision: 257845<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=257845&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=257845&view=rev</a><br>
> Log:<br>
> rangify; NFCI<br>
><br>
> Modified:<br>
> llvm/trunk/lib/Analysis/LoopInfo.cpp<br>
><br>
> Modified: llvm/trunk/lib/Analysis/LoopInfo.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopInfo.cpp?rev=257845&r1=257844&r2=257845&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopInfo.cpp?rev=257845&r1=257844&r2=257845&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Analysis/LoopInfo.cpp (original)<br>
> +++ llvm/trunk/lib/Analysis/LoopInfo.cpp Thu Jan 14 18:08:10 2016<br>
> @@ -92,8 +92,8 @@ bool Loop::makeLoopInvariant(Instruction<br>
> InsertPt = Preheader->getTerminator();<br>
> }<br>
> // Don't hoist instructions with loop-variant operands.<br>
> - for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i)<br>
> - if (!makeLoopInvariant(I->getOperand(i), Changed, InsertPt))<br>
> + for (Value *Operand : I->operands())<br>
> + if (!makeLoopInvariant(Operand, Changed, InsertPt))<br>
> return false;<br>
><br>
> // Hoist.<br>
> @@ -146,16 +146,15 @@ PHINode *Loop::getCanonicalInductionVari<br>
> }<br>
><br>
> bool Loop::isLCSSAForm(DominatorTree &DT) const {<br>
> - for (block_iterator BI = block_begin(), E = block_end(); BI != E; ++BI) {<br>
> - BasicBlock *BB = *BI;<br>
> - for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E;++I) {<br>
> + for (BasicBlock *BB : this->blocks()) {<br>
> + for (Instruction &I : *BB) {<br>
> // Tokens can't be used in PHI nodes and live-out tokens prevent loop<br>
> // optimizations, so for the purposes of considered LCSSA form, we<br>
> // can ignore them.<br>
> - if (I->getType()->isTokenTy())<br>
> + if (I.getType()->isTokenTy())<br>
> continue;<br>
><br>
> - for (Use &U : I->uses()) {<br>
> + for (Use &U : I.uses()) {<br>
> Instruction *UI = cast<Instruction>(U.getUser());<br>
> BasicBlock *UserBB = UI->getParent();<br>
> if (PHINode *P = dyn_cast<PHINode>(UI))<br>
> @@ -195,11 +194,11 @@ bool Loop::isLoopSimplifyForm() const {<br>
> bool Loop::isSafeToClone() const {<br>
> // Return false if any loop blocks contain indirectbrs, or there are any calls<br>
> // to noduplicate functions.<br>
> - for (Loop::block_iterator I = block_begin(), E = block_end(); I != E; ++I) {<br>
> - if (isa<IndirectBrInst>((*I)->getTerminator()))<br>
> + for (BasicBlock *BB : this->blocks()) {<br>
> + if (isa<IndirectBrInst>(BB->getTerminator()))<br>
> return false;<br>
><br>
> - if (const InvokeInst *II = dyn_cast<InvokeInst>((*I)->getTerminator())) {<br>
> + if (const InvokeInst *II = dyn_cast<InvokeInst>(BB->getTerminator())) {<br>
> if (II->cannotDuplicate())<br>
> return false;<br>
> // Return false if any loop blocks contain invokes to EH-pads other than<br>
> @@ -208,13 +207,12 @@ bool Loop::isSafeToClone() const {<br>
> if (FirstNonPHI->isEHPad() && !isa<LandingPadInst>(FirstNonPHI))<br>
> return false;<br>
> }<br>
> -<br>
> - for (BasicBlock::iterator BI = (*I)->begin(), BE = (*I)->end(); BI != BE; ++BI) {<br>
> - if (const CallInst *CI = dyn_cast<CallInst>(BI)) {<br>
> + for (Instruction &I : *BB) {<br>
> + if (const CallInst *CI = dyn_cast<CallInst>(&I)) {<br>
> if (CI->cannotDuplicate())<br>
> return false;<br>
> }<br>
> - if (BI->getType()->isTokenTy() && BI->isUsedOutsideOfBlock(*I))<br>
> + if (I.getType()->isTokenTy() && I.isUsedOutsideOfBlock(BB))<br>
> return false;<br>
> }<br>
> }<br>
> @@ -229,13 +227,13 @@ MDNode *Loop::getLoopID() const {<br>
> // Go through each predecessor of the loop header and check the<br>
> // terminator for the metadata.<br>
> BasicBlock *H = getHeader();<br>
> - for (block_iterator I = block_begin(), IE = block_end(); I != IE; ++I) {<br>
> - TerminatorInst *TI = (*I)->getTerminator();<br>
> + for (BasicBlock *BB : this->blocks()) {<br>
> + TerminatorInst *TI = BB->getTerminator();<br>
> MDNode *MD = nullptr;<br>
><br>
> // Check if this terminator branches to the loop header.<br>
> - for (unsigned i = 0, ie = TI->getNumSuccessors(); i != ie; ++i) {<br>
> - if (TI->getSuccessor(i) == H) {<br>
> + for (BasicBlock *Successor : TI->successors()) {<br>
> + if (Successor == H) {<br>
> MD = TI->getMetadata(LoopMDName);<br>
> break;<br>
> }<br>
> @@ -266,10 +264,10 @@ void Loop::setLoopID(MDNode *LoopID) con<br>
> }<br>
><br>
> BasicBlock *H = getHeader();<br>
> - for (block_iterator I = block_begin(), IE = block_end(); I != IE; ++I) {<br>
> - TerminatorInst *TI = (*I)->getTerminator();<br>
> - for (unsigned i = 0, ie = TI->getNumSuccessors(); i != ie; ++i) {<br>
> - if (TI->getSuccessor(i) == H)<br>
> + for (BasicBlock *BB : this->blocks()) {<br>
> + TerminatorInst *TI = BB->getTerminator();<br>
> + for (BasicBlock *Successor : TI->successors()) {<br>
> + if (Successor == H)<br>
> TI->setMetadata(LoopMDName, LoopID);<br>
> }<br>
> }<br>
> @@ -286,11 +284,9 @@ bool Loop::isAnnotatedParallel() const {<br>
> // dependencies (thus converted the loop back to a sequential loop), check<br>
> // that all the memory instructions in the loop contain parallelism metadata<br>
> // that point to the same unique "loop id metadata" the loop branch does.<br>
> - for (block_iterator BB = block_begin(), BE = block_end(); BB != BE; ++BB) {<br>
> - for (BasicBlock::iterator II = (*BB)->begin(), EE = (*BB)->end();<br>
> - II != EE; II++) {<br>
> -<br>
> - if (!II->mayReadOrWriteMemory())<br>
> + for (BasicBlock *BB : this->blocks()) {<br>
> + for (Instruction &I : *BB) {<br>
> + if (!I.mayReadOrWriteMemory())<br>
> continue;<br>
><br>
> // The memory instruction can refer to the loop identifier metadata<br>
> @@ -298,14 +294,14 @@ bool Loop::isAnnotatedParallel() const {<br>
> // nested parallel loops). The loop identifier metadata refers to<br>
> // itself so we can check both cases with the same routine.<br>
> MDNode *loopIdMD =<br>
> - II->getMetadata(LLVMContext::MD_mem_parallel_loop_access);<br>
> + I.getMetadata(LLVMContext::MD_mem_parallel_loop_access);<br>
><br>
> if (!loopIdMD)<br>
> return false;<br>
><br>
> bool loopIdMDFound = false;<br>
> - for (unsigned i = 0, e = loopIdMD->getNumOperands(); i < e; ++i) {<br>
> - if (loopIdMD->getOperand(i) == desiredLoopIdMetadata) {<br>
> + for (const MDOperand &MDOp : loopIdMD->operands()) {<br>
> + if (MDOp == desiredLoopIdMetadata) {<br>
> loopIdMDFound = true;<br>
> break;<br>
> }<br>
> @@ -323,10 +319,9 @@ bool Loop::hasDedicatedExits() const {<br>
> // within the loop.<br>
> SmallVector<BasicBlock *, 4> ExitBlocks;<br>
> getExitBlocks(ExitBlocks);<br>
> - for (unsigned i = 0, e = ExitBlocks.size(); i != e; ++i)<br>
> - for (pred_iterator PI = pred_begin(ExitBlocks[i]),<br>
> - PE = pred_end(ExitBlocks[i]); PI != PE; ++PI)<br>
> - if (!contains(*PI))<br>
> + for (BasicBlock *BB : ExitBlocks)<br>
> + for (BasicBlock *Predecessor : predecessors(BB))<br>
> + if (!contains(Predecessor))<br>
> return false;<br>
> // All the requirements are met.<br>
> return true;<br>
> @@ -338,42 +333,38 @@ Loop::getUniqueExitBlocks(SmallVectorImp<br>
> "getUniqueExitBlocks assumes the loop has canonical form exits!");<br>
><br>
> SmallVector<BasicBlock *, 32> switchExitBlocks;<br>
> -<br>
> - for (block_iterator BI = block_begin(), BE = block_end(); BI != BE; ++BI) {<br>
> -<br>
> - BasicBlock *current = *BI;<br>
> + for (BasicBlock *BB : this->blocks()) {<br>
> switchExitBlocks.clear();<br>
> -<br>
> - for (succ_iterator I = succ_begin(*BI), E = succ_end(*BI); I != E; ++I) {<br>
> - // If block is inside the loop then it is not a exit block.<br>
> - if (contains(*I))<br>
> + for (BasicBlock *Successor : successors(BB)) {<br>
> + // If block is inside the loop then it is not an exit block.<br>
> + if (contains(Successor))<br>
> continue;<br>
><br>
> - pred_iterator PI = pred_begin(*I);<br>
> + pred_iterator PI = pred_begin(Successor);<br>
> BasicBlock *firstPred = *PI;<br>
><br>
> // If current basic block is this exit block's first predecessor<br>
> // then only insert exit block in to the output ExitBlocks vector.<br>
> // This ensures that same exit block is not inserted twice into<br>
> // ExitBlocks vector.<br>
> - if (current != firstPred)<br>
> + if (BB != firstPred)<br>
> continue;<br>
><br>
> // If a terminator has more then two successors, for example SwitchInst,<br>
> // then it is possible that there are multiple edges from current block<br>
> // to one exit block.<br>
> - if (std::distance(succ_begin(current), succ_end(current)) <= 2) {<br>
> - ExitBlocks.push_back(*I);<br>
> + if (std::distance(succ_begin(BB), succ_end(BB)) <= 2) {<br>
> + ExitBlocks.push_back(Successor);<br>
> continue;<br>
> }<br>
><br>
> // In case of multiple edges from current block to exit block, collect<br>
> // only one edge in ExitBlocks. Use switchExitBlocks to keep track of<br>
> // duplicate edges.<br>
> - if (std::find(switchExitBlocks.begin(), switchExitBlocks.end(), *I)<br>
> + if (std::find(switchExitBlocks.begin(), switchExitBlocks.end(), Successor)<br>
> == switchExitBlocks.end()) {<br>
> - switchExitBlocks.push_back(*I);<br>
> - ExitBlocks.push_back(*I);<br>
> + switchExitBlocks.push_back(Successor);<br>
> + ExitBlocks.push_back(Successor);<br>
> }<br>
> }<br>
> }<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br>
</div></div></blockquote></div><br></div>