<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>