[llvm] r243163 - Use make_range(rbegin(), rend()) to allow foreach loops. NFC.
Pete Cooper
peter_cooper at apple.com
Fri Jul 24 14:23:34 PDT 2015
> On Jul 24, 2015, at 2:22 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>
>
> On Fri, Jul 24, 2015 at 2:13 PM, Pete Cooper <peter_cooper at apple.com <mailto: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 <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:
Not a bad idea. There’s more than a few of these as you can see. I haven’t even fixed them all.
>
> 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.
Yeah, sounds good. I think thats how foreach works on begin/end anyway, so i see where you got the idea from.
Will follow up with that in another patch, probably sometime next week at this point, unless i find time this afternoon.
Pete
>
>
> 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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <mailto:llvm-commits at cs.uiuc.edu>
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits <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/ce7a9c60/attachment.html>
More information about the llvm-commits
mailing list