[llvm] r243163 - Use make_range(rbegin(), rend()) to allow foreach loops. NFC.

David Blaikie dblaikie at gmail.com
Fri Jul 24 14:22:03 PDT 2015


On Fri, Jul 24, 2015 at 2:13 PM, Pete Cooper <peter_cooper at apple.com> wrote:

> Author: pete
> Date: Fri Jul 24 16:13:43 2015
> New Revision: 243163
>
> URL: http://llvm.org/viewvc/llvm-project?rev=243163&view=rev
> Log:
> Use make_range(rbegin(), rend()) to allow foreach loops.  NFC.
>
> Instead of the pattern
>
> for (auto I = x.rbegin(), E = x.end(); I != E; ++I)
>
> we can use make_range to construct the reverse range and iterate using
> that instead.
>

Could have some range adapters here:

  for (... : reverse(x))

Which, if it's extra smart - would use rbegin/rend if available, otherwise
would construct std::reverse_iterators around the begin/end.


>
> Modified:
>     llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp
>     llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp
>     llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp
>     llvm/trunk/lib/IR/AsmWriter.cpp
>     llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp
>     llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp
>     llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp
>     llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/ARMException.cpp Fri Jul 24 16:13:43
> 2015
> @@ -115,9 +115,8 @@ void ARMException::emitTypeInfos(unsigne
>      Entry = TypeInfos.size();
>    }
>
> -  for (std::vector<const GlobalValue *>::const_reverse_iterator
> -         I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) {
> -    const GlobalValue *GV = *I;
> +  for (const GlobalValue *GV : make_range(TypeInfos.rbegin(),
> +                                          TypeInfos.rend())) {
>      if (VerboseAsm)
>        Asm->OutStreamer->AddComment("TypeInfo " + Twine(Entry--));
>      Asm->EmitTTypeReference(GV, TTypeEncoding);
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Fri Jul 24 16:13:43
> 2015
> @@ -804,8 +804,7 @@ std::string DwarfUnit::getParentContextS
>
>    // Reverse iterate over our list to go from the outermost construct to
> the
>    // innermost.
> -  for (auto I = Parents.rbegin(), E = Parents.rend(); I != E; ++I) {
> -    const DIScope *Ctx = *I;
> +  for (const DIScope *Ctx : make_range(Parents.rbegin(), Parents.rend()))
> {
>      StringRef Name = Ctx->getName();
>      if (Name.empty() && isa<DINamespace>(Ctx))
>        Name = "(anonymous namespace)";
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/EHStreamer.cpp Fri Jul 24 16:13:43
> 2015
> @@ -662,9 +662,8 @@ void EHStreamer::emitTypeInfos(unsigned
>      Entry = TypeInfos.size();
>    }
>
> -  for (std::vector<const GlobalValue *>::const_reverse_iterator
> -         I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) {
> -    const GlobalValue *GV = *I;
> +  for (const GlobalValue *GV : make_range(TypeInfos.rbegin(),
> +                                          TypeInfos.rend())) {
>      if (VerboseAsm)
>        Asm->OutStreamer->AddComment("TypeInfo " + Twine(Entry--));
>      Asm->EmitTTypeReference(GV, TTypeEncoding);
>
> Modified: llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp (original)
> +++ llvm/trunk/lib/CodeGen/DeadMachineInstructionElim.cpp Fri Jul 24
> 16:13:43 2015
> @@ -101,26 +101,23 @@ bool DeadMachineInstructionElim::runOnMa
>    // Loop over all instructions in all blocks, from bottom to top, so
> that it's
>    // more likely that chains of dependent but ultimately dead
> instructions will
>    // be cleaned up.
> -  for (MachineFunction::reverse_iterator I = MF.rbegin(), E = MF.rend();
> -       I != E; ++I) {
> -    MachineBasicBlock *MBB = &*I;
> -
> +  for (MachineBasicBlock &MBB : make_range(MF.rbegin(), MF.rend())) {
>      // Start out assuming that reserved registers are live out of this
> block.
>      LivePhysRegs = MRI->getReservedRegs();
>
>      // Add live-ins from sucessors to LivePhysRegs. Normally, physregs
> are not
>      // live across blocks, but some targets (x86) can have flags live out
> of a
>      // block.
> -    for (MachineBasicBlock::succ_iterator S = MBB->succ_begin(),
> -           E = MBB->succ_end(); S != E; S++)
> +    for (MachineBasicBlock::succ_iterator S = MBB.succ_begin(),
> +           E = MBB.succ_end(); S != E; S++)
>        for (MachineBasicBlock::livein_iterator LI = (*S)->livein_begin();
>             LI != (*S)->livein_end(); LI++)
>          LivePhysRegs.set(*LI);
>
>      // Now scan the instructions and delete dead ones, tracking physreg
>      // liveness as we go.
> -    for (MachineBasicBlock::reverse_iterator MII = MBB->rbegin(),
> -         MIE = MBB->rend(); MII != MIE; ) {
> +    for (MachineBasicBlock::reverse_iterator MII = MBB.rbegin(),
> +         MIE = MBB.rend(); MII != MIE; ) {
>        MachineInstr *MI = &*MII;
>
>        // If the instruction is dead, delete it!
> @@ -132,7 +129,7 @@ bool DeadMachineInstructionElim::runOnMa
>          MI->eraseFromParentAndMarkDBGValuesForRemoval();
>          AnyChanges = true;
>          ++NumDeletes;
> -        MIE = MBB->rend();
> +        MIE = MBB.rend();
>          // MII is now pointing to the next instruction to process,
>          // so don't increment it.
>          continue;
>
> Modified: llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp (original)
> +++ llvm/trunk/lib/CodeGen/ExecutionDepsFix.cpp Fri Jul 24 16:13:43 2015
> @@ -559,12 +559,11 @@ void ExeDepsFix::processUndefReads(Machi
>    MachineInstr *UndefMI = UndefReads.back().first;
>    unsigned OpIdx = UndefReads.back().second;
>
> -  for (MachineBasicBlock::reverse_iterator I = MBB->rbegin(), E =
> MBB->rend();
> -       I != E; ++I) {
> +  for (MachineInstr &I : make_range(MBB->rbegin(), MBB->rend())) {
>      // Update liveness, including the current instruction's defs.
> -    LiveRegSet.stepBackward(*I);
> +    LiveRegSet.stepBackward(I);
>
> -    if (UndefMI == &*I) {
> +    if (UndefMI == &I) {
>        if (!LiveRegSet.contains(UndefMI->getOperand(OpIdx).getReg()))
>          TII->breakPartialRegDependency(UndefMI, OpIdx, TRI);
>
>
> Modified: llvm/trunk/lib/IR/AsmWriter.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AsmWriter.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/IR/AsmWriter.cpp (original)
> +++ llvm/trunk/lib/IR/AsmWriter.cpp Fri Jul 24 16:13:43 2015
> @@ -232,8 +232,7 @@ static UseListOrderStack predictUseListO
>    // We want to visit the functions backward now so we can list
> function-local
>    // constants in the last Function they're used in.  Module-level
> constants
>    // have already been visited above.
> -  for (auto I = M->rbegin(), E = M->rend(); I != E; ++I) {
> -    const Function &F = *I;
> +  for (const Function &F : make_range(M->rbegin(), M->rend())) {
>      if (F.isDeclaration())
>        continue;
>      for (const BasicBlock &BB : F)
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64A53Fix835769.cpp Fri Jul 24
> 16:13:43 2015
> @@ -151,10 +151,9 @@ static MachineInstr *getLastNonPseudo(Ma
>    // If there is no non-pseudo in the current block, loop back around and
> try
>    // the previous block (if there is one).
>    while ((FMBB = getBBFallenThrough(FMBB, TII))) {
> -    for (auto I = FMBB->rbegin(), E = FMBB->rend(); I != E; ++I) {
> -      if (!I->isPseudo())
> -        return &*I;
> -    }
> +    for (MachineInstr &I : make_range(FMBB->rbegin(), FMBB->rend()))
> +      if (!I.isPseudo())
> +        return &I;
>    }
>
>    // There was no previous non-pseudo in the fallen through blocks
>
> Modified: llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/Float2Int.cpp Fri Jul 24 16:13:43 2015
> @@ -242,11 +242,11 @@ void Float2Int::walkBackwards(const Smal
>  // Walk forwards down the list of seen instructions, so we visit defs
> before
>  // uses.
>  void Float2Int::walkForwards() {
> -  for (auto It = SeenInsts.rbegin(), E = SeenInsts.rend(); It != E; ++It)
> {
> -    if (It->second != unknownRange())
> +  for (auto &It : make_range(SeenInsts.rbegin(), SeenInsts.rend())) {
> +    if (It.second != unknownRange())
>        continue;
>
> -    Instruction *I = It->first;
> +    Instruction *I = It.first;
>      std::function<ConstantRange(ArrayRef<ConstantRange>)> Op;
>      switch (I->getOpcode()) {
>        // FIXME: Handle select and phi nodes.
> @@ -507,9 +507,8 @@ Value *Float2Int::convert(Instruction *I
>
>  // Perform dead code elimination on the instructions we just modified.
>  void Float2Int::cleanup() {
> -  for (auto I = ConvertedInsts.rbegin(), E = ConvertedInsts.rend();
> -       I != E; ++I)
> -    I->first->eraseFromParent();
> +  for (auto &I : make_range(ConvertedInsts.rbegin(),
> ConvertedInsts.rend()))
> +    I.first->eraseFromParent();
>  }
>
>  bool Float2Int::runOnFunction(Function &F) {
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LoopDistribute.cpp Fri Jul 24
> 16:13:43 2015
> @@ -164,9 +164,7 @@ public:
>
>      // Delete the instructions backwards, as it has a reduced likelihood
> of
>      // having to update as many def-use and use-def chains.
> -    for (auto I = Unused.rbegin(), E = Unused.rend(); I != E; ++I) {
> -      auto *Inst = *I;
> -
> +    for (auto *Inst : make_range(Unused.rbegin(), Unused.rend())) {
>        if (!Inst->use_empty())
>          Inst->replaceAllUsesWith(UndefValue::get(Inst->getType()));
>        Inst->eraseFromParent();
>
> Modified: llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp?rev=243163&r1=243162&r2=243163&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp Fri Jul 24 16:13:43
> 2015
> @@ -851,9 +851,8 @@ updateInlinedAtInfo(DebugLoc DL, DILocat
>    // Starting from the top, rebuild the nodes to point to the new
> inlined-at
>    // location (then rebuilding the rest of the chain behind it) and
> update the
>    // map of already-constructed inlined-at nodes.
> -  for (auto I = InlinedAtLocations.rbegin(), E =
> InlinedAtLocations.rend();
> -       I != E; ++I) {
> -    const DILocation *MD = *I;
> +  for (const DILocation *MD : make_range(InlinedAtLocations.rbegin(),
> +                                         InlinedAtLocations.rend())) {
>      Last = IANodes[MD] = DILocation::getDistinct(
>          Ctx, MD->getLine(), MD->getColumn(), MD->getScope(), Last);
>    }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150724/77d706a3/attachment.html>


More information about the llvm-commits mailing list