<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 24, 2015 at 2:13 PM, Pete Cooper <span dir="ltr"><<a href="mailto:peter_cooper@apple.com" target="_blank">peter_cooper@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: pete<br>
Date: Fri Jul 24 16:13:43 2015<br>
New Revision: 243163<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D243163-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=DVZWn7ES_17Df_olym9-_YpWjC7dv_wFDcW3TkreZ8s&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=243163&view=rev</a><br>
Log:<br>
Use make_range(rbegin(), rend()) to allow foreach loops.  NFC.<br>
<br>
Instead of the pattern<br>
<br>
for (auto I = x.rbegin(), E = x.end(); I != E; ++I)<br>
<br>
we can use make_range to construct the reverse range and iterate using<br>
that instead.<br></blockquote><div><br></div><div>Could have some range adapters here:<br><br>  for (... : reverse(x))<br><br>Which, if it's extra smart - would use rbegin/rend if available, otherwise would construct std::reverse_iterators around the begin/end.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Modified:<br>
    llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp<br>
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp<br>
    llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp<br>
    llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp<br>
    llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp<br>
    llvm/trunk/lib/IR/AsmWriter.cpp<br>
    llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp<br>
    llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp<br>
    llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp<br>
    llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_AsmPrinter_ARMException.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=P610LbMby_RFBHG982tAH2NmxwIUUc8VD8xyOf30ccU&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp Fri Jul 24 16:13:43 2015<br>
@@ -115,9 +115,8 @@ void ARMException::emitTypeInfos(unsigne<br>
     Entry = TypeInfos.size();<br>
   }<br>
<br>
-  for (std::vector<const GlobalValue *>::const_reverse_iterator<br>
-         I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) {<br>
-    const GlobalValue *GV = *I;<br>
+  for (const GlobalValue *GV : make_range(TypeInfos.rbegin(),<br>
+                                          TypeInfos.rend())) {<br>
     if (VerboseAsm)<br>
       Asm->OutStreamer->AddComment("TypeInfo " + Twine(Entry--));<br>
     Asm->EmitTTypeReference(GV, TTypeEncoding);<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_AsmPrinter_DwarfUnit.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=RFLQ7nTfRsMPtpeHixQ63ziQ9cSFfARgb3XzkhOnWX8&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Fri Jul 24 16:13:43 2015<br>
@@ -804,8 +804,7 @@ std::string DwarfUnit::getParentContextS<br>
<br>
   // Reverse iterate over our list to go from the outermost construct to the<br>
   // innermost.<br>
-  for (auto I = Parents.rbegin(), E = Parents.rend(); I != E; ++I) {<br>
-    const DIScope *Ctx = *I;<br>
+  for (const DIScope *Ctx : make_range(Parents.rbegin(), Parents.rend())) {<br>
     StringRef Name = Ctx->getName();<br>
     if (Name.empty() && isa<DINamespace>(Ctx))<br>
       Name = "(anonymous namespace)";<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_AsmPrinter_EHStreamer.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=Tc761RxUe4_EAkwwQxkUytufZ6J0UuHo6YNbQfm964c&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp Fri Jul 24 16:13:43 2015<br>
@@ -662,9 +662,8 @@ void EHStreamer::emitTypeInfos(unsigned<br>
     Entry = TypeInfos.size();<br>
   }<br>
<br>
-  for (std::vector<const GlobalValue *>::const_reverse_iterator<br>
-         I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) {<br>
-    const GlobalValue *GV = *I;<br>
+  for (const GlobalValue *GV : make_range(TypeInfos.rbegin(),<br>
+                                          TypeInfos.rend())) {<br>
     if (VerboseAsm)<br>
       Asm->OutStreamer->AddComment("TypeInfo " + Twine(Entry--));<br>
     Asm->EmitTTypeReference(GV, TTypeEncoding);<br>
<br>
Modified: llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_DeadMachineInstructionElim.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=Y-voSbnu1r68yBDBd9ZygQI_3N9QeNsAmnjPfIr_Byo&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp Fri Jul 24 16:13:43 2015<br>
@@ -101,26 +101,23 @@ bool DeadMachineInstructionElim::runOnMa<br>
   // Loop over all instructions in all blocks, from bottom to top, so that it's<br>
   // more likely that chains of dependent but ultimately dead instructions will<br>
   // be cleaned up.<br>
-  for (MachineFunction::reverse_iterator I = MF.rbegin(), E = MF.rend();<br>
-       I != E; ++I) {<br>
-    MachineBasicBlock *MBB = &*I;<br>
-<br>
+  for (MachineBasicBlock &MBB : make_range(MF.rbegin(), MF.rend())) {<br>
     // Start out assuming that reserved registers are live out of this block.<br>
     LivePhysRegs = MRI->getReservedRegs();<br>
<br>
     // Add live-ins from sucessors to LivePhysRegs. Normally, physregs are not<br>
     // live across blocks, but some targets (x86) can have flags live out of a<br>
     // block.<br>
-    for (MachineBasicBlock::succ_iterator S = MBB->succ_begin(),<br>
-           E = MBB->succ_end(); S != E; S++)<br>
+    for (MachineBasicBlock::succ_iterator S = MBB.succ_begin(),<br>
+           E = MBB.succ_end(); S != E; S++)<br>
       for (MachineBasicBlock::livein_iterator LI = (*S)->livein_begin();<br>
            LI != (*S)->livein_end(); LI++)<br>
         LivePhysRegs.set(*LI);<br>
<br>
     // Now scan the instructions and delete dead ones, tracking physreg<br>
     // liveness as we go.<br>
-    for (MachineBasicBlock::reverse_iterator MII = MBB->rbegin(),<br>
-         MIE = MBB->rend(); MII != MIE; ) {<br>
+    for (MachineBasicBlock::reverse_iterator MII = MBB.rbegin(),<br>
+         MIE = MBB.rend(); MII != MIE; ) {<br>
       MachineInstr *MI = &*MII;<br>
<br>
       // If the instruction is dead, delete it!<br>
@@ -132,7 +129,7 @@ bool DeadMachineInstructionElim::runOnMa<br>
         MI->eraseFromParentAndMarkDBGValuesForRemoval();<br>
         AnyChanges = true;<br>
         ++NumDeletes;<br>
-        MIE = MBB->rend();<br>
+        MIE = MBB.rend();<br>
         // MII is now pointing to the next instruction to process,<br>
         // so don't increment it.<br>
         continue;<br>
<br>
Modified: llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_ExecutionDepsFix.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=PAU1SmS1IQ-4H5XUlL5C0qjmfS_FLdORhpM4WJVvrYQ&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp Fri Jul 24 16:13:43 2015<br>
@@ -559,12 +559,11 @@ void ExeDepsFix::processUndefReads(Machi<br>
   MachineInstr *UndefMI = UndefReads.back().first;<br>
   unsigned OpIdx = UndefReads.back().second;<br>
<br>
-  for (MachineBasicBlock::reverse_iterator I = MBB->rbegin(), E = MBB->rend();<br>
-       I != E; ++I) {<br>
+  for (MachineInstr &I : make_range(MBB->rbegin(), MBB->rend())) {<br>
     // Update liveness, including the current instruction's defs.<br>
-    LiveRegSet.stepBackward(*I);<br>
+    LiveRegSet.stepBackward(I);<br>
<br>
-    if (UndefMI == &*I) {<br>
+    if (UndefMI == &I) {<br>
       if (!LiveRegSet.contains(UndefMI->getOperand(OpIdx).getReg()))<br>
         TII->breakPartialRegDependency(UndefMI, OpIdx, TRI);<br>
<br>
<br>
Modified: llvm/trunk/lib/IR/AsmWriter.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_IR_AsmWriter.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=S3A2GjdkZwxohEtTqXIG59CB17eGo5Onm3feSK4RfR8&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AsmWriter.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/IR/AsmWriter.cpp (original)<br>
+++ llvm/trunk/lib/IR/AsmWriter.cpp Fri Jul 24 16:13:43 2015<br>
@@ -232,8 +232,7 @@ static UseListOrderStack predictUseListO<br>
   // We want to visit the functions backward now so we can list function-local<br>
   // constants in the last Function they're used in.  Module-level constants<br>
   // have already been visited above.<br>
-  for (auto I = M->rbegin(), E = M->rend(); I != E; ++I) {<br>
-    const Function &F = *I;<br>
+  for (const Function &F : make_range(M->rbegin(), M->rend())) {<br>
     if (F.isDeclaration())<br>
       continue;<br>
     for (const BasicBlock &BB : F)<br>
<br>
Modified: llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Target_AArch64_AArch64A53Fix835769.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=wPrLgS1rftvE_nqHa1B9BC4xS1Rt-MqKY_Ot1gaOYW4&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp (original)<br>
+++ llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp Fri Jul 24 16:13:43 2015<br>
@@ -151,10 +151,9 @@ static MachineInstr *getLastNonPseudo(Ma<br>
   // If there is no non-pseudo in the current block, loop back around and try<br>
   // the previous block (if there is one).<br>
   while ((FMBB = getBBFallenThrough(FMBB, TII))) {<br>
-    for (auto I = FMBB->rbegin(), E = FMBB->rend(); I != E; ++I) {<br>
-      if (!I->isPseudo())<br>
-        return &*I;<br>
-    }<br>
+    for (MachineInstr &I : make_range(FMBB->rbegin(), FMBB->rend()))<br>
+      if (!I.isPseudo())<br>
+        return &I;<br>
   }<br>
<br>
   // There was no previous non-pseudo in the fallen through blocks<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Transforms_Scalar_Float2Int.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=S2VTmil-w7H8H5llDQmk0XT2ciIYrpQLesdjllTGTr0&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp Fri Jul 24 16:13:43 2015<br>
@@ -242,11 +242,11 @@ void Float2Int::walkBackwards(const Smal<br>
 // Walk forwards down the list of seen instructions, so we visit defs before<br>
 // uses.<br>
 void Float2Int::walkForwards() {<br>
-  for (auto It = SeenInsts.rbegin(), E = SeenInsts.rend(); It != E; ++It) {<br>
-    if (It->second != unknownRange())<br>
+  for (auto &It : make_range(SeenInsts.rbegin(), SeenInsts.rend())) {<br>
+    if (It.second != unknownRange())<br>
       continue;<br>
<br>
-    Instruction *I = It->first;<br>
+    Instruction *I = It.first;<br>
     std::function<ConstantRange(ArrayRef<ConstantRange>)> Op;<br>
     switch (I->getOpcode()) {<br>
       // FIXME: Handle select and phi nodes.<br>
@@ -507,9 +507,8 @@ Value *Float2Int::convert(Instruction *I<br>
<br>
 // Perform dead code elimination on the instructions we just modified.<br>
 void Float2Int::cleanup() {<br>
-  for (auto I = ConvertedInsts.rbegin(), E = ConvertedInsts.rend();<br>
-       I != E; ++I)<br>
-    I->first->eraseFromParent();<br>
+  for (auto &I : make_range(ConvertedInsts.rbegin(), ConvertedInsts.rend()))<br>
+    I.first->eraseFromParent();<br>
 }<br>
<br>
 bool Float2Int::runOnFunction(Function &F) {<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Transforms_Scalar_LoopDistribute.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=LoAkZA2DdDPz5WwDWhC2j5YgzK79sUMdguioRPc5IRg&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp Fri Jul 24 16:13:43 2015<br>
@@ -164,9 +164,7 @@ public:<br>
<br>
     // Delete the instructions backwards, as it has a reduced likelihood of<br>
     // having to update as many def-use and use-def chains.<br>
-    for (auto I = Unused.rbegin(), E = Unused.rend(); I != E; ++I) {<br>
-      auto *Inst = *I;<br>
-<br>
+    for (auto *Inst : make_range(Unused.rbegin(), Unused.rend())) {<br>
       if (!Inst->use_empty())<br>
         Inst->replaceAllUsesWith(UndefValue::get(Inst->getType()));<br>
       Inst->eraseFromParent();<br>
<br>
Modified: llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Transforms_Utils_InlineFunction.cpp-3Frev-3D243163-26r1-3D243162-26r2-3D243163-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=Bs5SUj0libxV7gAM3LaBvxwjj0kRz1cgLnyPBQv-NUc&s=I1qRBzdEF0UqNQ6yFx_if5FOuHO-U-JaFGwL7dDYCcs&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp?rev=243163&r1=243162&r2=243163&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp Fri Jul 24 16:13:43 2015<br>
@@ -851,9 +851,8 @@ updateInlinedAtInfo(DebugLoc DL, DILocat<br>
   // Starting from the top, rebuild the nodes to point to the new inlined-at<br>
   // location (then rebuilding the rest of the chain behind it) and update the<br>
   // map of already-constructed inlined-at nodes.<br>
-  for (auto I = InlinedAtLocations.rbegin(), E = InlinedAtLocations.rend();<br>
-       I != E; ++I) {<br>
-    const DILocation *MD = *I;<br>
+  for (const DILocation *MD : make_range(InlinedAtLocations.rbegin(),<br>
+                                         InlinedAtLocations.rend())) {<br>
     Last = IANodes[MD] = DILocation::getDistinct(<br>
         Ctx, MD->getLine(), MD->getColumn(), MD->getScope(), Last);<br>
   }<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>