<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Apr 14, 2015 at 6:33 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">On Tue, Apr 14, 2015 at 6:21 PM, Richard Trieu <<a href="mailto:rtrieu@google.com">rtrieu@google.com</a>> wrote:<br>
> Author: rtrieu<br>
> Date: Tue Apr 14 20:21:15 2015<br>
> New Revision: 234963<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=234963&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=234963&view=rev</a><br>
> Log:<br>
> Change range-based for-loops to be -Wrange-loop-analysis clean.<br>
> No functionality change.<br>
><br>
> Modified:<br>
> llvm/trunk/lib/Analysis/RegionPass.cpp<br>
> llvm/trunk/lib/CodeGen/WinEHPrepare.cpp<br>
> llvm/trunk/lib/MC/MCDwarf.cpp<br>
> llvm/trunk/lib/Object/COFFObjectFile.cpp<br>
> llvm/trunk/lib/Target/AArch64/AArch64CollectLOH.cpp<br>
> llvm/trunk/lib/Transforms/Scalar/StructurizeCFG.cpp<br>
> llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp<br>
> llvm/trunk/utils/TableGen/CodeGenRegisters.cpp<br>
><br>
> Modified: llvm/trunk/lib/Analysis/RegionPass.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/RegionPass.cpp?rev=234963&r1=234962&r2=234963&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/RegionPass.cpp?rev=234963&r1=234962&r2=234963&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Analysis/RegionPass.cpp (original)<br>
> +++ llvm/trunk/lib/Analysis/RegionPass.cpp Tue Apr 14 20:21:15 2015<br>
> @@ -199,7 +199,7 @@ public:<br>
><br>
> bool runOnRegion(Region *R, RGPassManager &RGM) override {<br>
> Out << Banner;<br>
> - for (const auto &BB : R->blocks()) {<br>
> + for (const auto *BB : R->blocks()) {<br>
> if (BB)<br>
> BB->print(Out);<br>
> else<br>
><br>
> Modified: llvm/trunk/lib/CodeGen/WinEHPrepare.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/WinEHPrepare.cpp?rev=234963&r1=234962&r2=234963&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/WinEHPrepare.cpp?rev=234963&r1=234962&r2=234963&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/CodeGen/WinEHPrepare.cpp (original)<br>
> +++ llvm/trunk/lib/CodeGen/WinEHPrepare.cpp Tue Apr 14 20:21:15 2015<br>
> @@ -909,7 +909,7 @@ bool WinEHPrepare::outlineHandler(Action<br>
> // save the association of the blocks in LPadTargetBlocks. The<br>
> // return instructions which are created from these branches will be<br>
> // replaced after all landing pads have been outlined.<br>
> - for (const auto &MapEntry : VMap) {<br>
> + for (const auto MapEntry : VMap) {<br>
<br>
What's the deal with this change? Is the type small & trivially<br>
copyable & we're suggesting using values instead of references?<br>
<br></blockquote><div>VMap does not return a reference, so remove the reference type to indicate a copy is always made.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
> // VMap maps all values and blocks that were just cloned, but dead<br>
> // blocks which were pruned will map to nullptr.<br>
> if (!isa<BasicBlock>(MapEntry.first) || MapEntry.second == nullptr)<br>
><br>
> Modified: llvm/trunk/lib/MC/MCDwarf.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=234963&r1=234962&r2=234963&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=234963&r1=234962&r2=234963&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/MC/MCDwarf.cpp (original)<br>
> +++ llvm/trunk/lib/MC/MCDwarf.cpp Tue Apr 14 20:21:15 2015<br>
> @@ -803,7 +803,7 @@ static void EmitGenDwarfRanges(MCStreame<br>
><br>
> MCOS->SwitchSection(context.getObjectFileInfo()->getDwarfRangesSection());<br>
><br>
> - for (const auto sec : Sections) {<br>
> + for (const auto &sec : Sections) {<br>
><br>
> MCSymbol *StartSymbol = sec.second.first;<br>
> MCSymbol *EndSymbol = sec.second.second;<br>
><br>
> Modified: llvm/trunk/lib/Object/COFFObjectFile.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/COFFObjectFile.cpp?rev=234963&r1=234962&r2=234963&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/COFFObjectFile.cpp?rev=234963&r1=234962&r2=234963&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Object/COFFObjectFile.cpp (original)<br>
> +++ llvm/trunk/lib/Object/COFFObjectFile.cpp Tue Apr 14 20:21:15 2015<br>
> @@ -262,7 +262,7 @@ std::error_code COFFObjectFile::getSymbo<br>
> }<br>
> const section_iterator SecEnd = section_end();<br>
> uint64_t AfterAddr = UnknownAddressOrSize;<br>
> - for (const symbol_iterator &SymbI : symbols()) {<br>
> + for (const symbol_iterator SymbI : symbols()) {<br>
<br>
Drop const if we're dropping ref?<br></blockquote><div>See two lines above where the code uses a const iterator. This change follows the current code. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
> section_iterator SecI = SecEnd;<br>
> if (std::error_code EC = SymbI->getSection(SecI))<br>
> return EC;<br>
><br>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64CollectLOH.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64CollectLOH.cpp?rev=234963&r1=234962&r2=234963&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64CollectLOH.cpp?rev=234963&r1=234962&r2=234963&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Target/AArch64/AArch64CollectLOH.cpp (original)<br>
> +++ llvm/trunk/lib/Target/AArch64/AArch64CollectLOH.cpp Tue Apr 14 20:21:15 2015<br>
> @@ -328,7 +328,7 @@ static void initReachingDef(const Machin<br>
> const uint32_t *PreservedRegs = MO.getRegMask();<br>
><br>
> // Set generated regs.<br>
> - for (const auto Entry : RegToId) {<br>
> + for (const auto &Entry : RegToId) {<br>
> unsigned Reg = Entry.second;<br>
> // Use the global register ID when querying APIs external to this<br>
> // pass.<br>
><br>
> Modified: llvm/trunk/lib/Transforms/Scalar/StructurizeCFG.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/StructurizeCFG.cpp?rev=234963&r1=234962&r2=234963&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/StructurizeCFG.cpp?rev=234963&r1=234962&r2=234963&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/Scalar/StructurizeCFG.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/Scalar/StructurizeCFG.cpp Tue Apr 14 20:21:15 2015<br>
> @@ -887,7 +887,7 @@ void StructurizeCFG::createFlow() {<br>
> /// no longer dominate all their uses. Not sure if this is really nessasary<br>
> void StructurizeCFG::rebuildSSA() {<br>
> SSAUpdater Updater;<br>
> - for (const auto &BB : ParentRegion->blocks())<br>
> + for (auto *BB : ParentRegion->blocks())<br>
> for (BasicBlock::iterator II = BB->begin(), IE = BB->end();<br>
> II != IE; ++II) {<br>
><br>
><br>
> Modified: llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp?rev=234963&r1=234962&r2=234963&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp?rev=234963&r1=234962&r2=234963&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp (original)<br>
> +++ llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp Tue Apr 14 20:21:15 2015<br>
> @@ -355,7 +355,8 @@ static void dumpCXXData(const ObjectFile<br>
> StringRef SymName = VFTableEntry.second;<br>
> outs() << VFTableName << '[' << Offset << "]: " << SymName << '\n';<br>
> }<br>
> - for (const std::pair<StringRef, ArrayRef<little32_t>> &VBTable : VBTables) {<br>
> + for (const std::pair<const StringRef, ArrayRef<little32_t>> &VBTable : <br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Can probably use 'const auto &' here.<br></blockquote><div>Fixed in r234974. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
> + VBTables) {<br>
> StringRef VBTableName = VBTable.first;<br>
> uint32_t Idx = 0;<br>
> for (little32_t Offset : VBTable.second) {<br>
> @@ -363,7 +364,8 @@ static void dumpCXXData(const ObjectFile<br>
> Idx += sizeof(Offset);<br>
> }<br>
> }<br>
> - for (const std::pair<StringRef, CompleteObjectLocator> &COLPair : COLs) {<br>
> + for (const std::pair<const StringRef, CompleteObjectLocator> &COLPair :<br>
> + COLs) {<br>
> StringRef COLName = COLPair.first;<br>
> const CompleteObjectLocator &COL = COLPair.second;<br>
> outs() << COLName << "[IsImageRelative]: " << COL.Data[0] << '\n';<br>
> @@ -373,7 +375,8 @@ static void dumpCXXData(const ObjectFile<br>
> outs() << COLName << "[ClassHierarchyDescriptor]: " << COL.Symbols[1]<br>
> << '\n';<br>
> }<br>
> - for (const std::pair<StringRef, ClassHierarchyDescriptor> &CHDPair : CHDs) {<br>
> + for (const std::pair<const StringRef, ClassHierarchyDescriptor> &CHDPair :<br>
> + CHDs) {<br>
> StringRef CHDName = CHDPair.first;<br>
> const ClassHierarchyDescriptor &CHD = CHDPair.second;<br>
> outs() << CHDName << "[AlwaysZero]: " << CHD.Data[0] << '\n';<br>
> @@ -381,14 +384,14 @@ static void dumpCXXData(const ObjectFile<br>
> outs() << CHDName << "[NumClasses]: " << CHD.Data[2] << '\n';<br>
> outs() << CHDName << "[BaseClassArray]: " << CHD.Symbols[0] << '\n';<br>
> }<br>
> - for (const std::pair<std::pair<StringRef, uint64_t>, StringRef> &BCAEntry :<br>
> - BCAEntries) {<br>
> + for (const std::pair<const std::pair<StringRef, uint64_t>, StringRef><br>
<br>
And "const auto &" here too, I suspect.<br>
<br>
> + &BCAEntry : BCAEntries) {<br>
> StringRef BCAName = BCAEntry.first.first;<br>
> uint64_t Offset = BCAEntry.first.second;<br>
> StringRef SymName = BCAEntry.second;<br>
> outs() << BCAName << '[' << Offset << "]: " << SymName << '\n';<br>
> }<br>
> - for (const std::pair<StringRef, BaseClassDescriptor> &BCDPair : BCDs) {<br>
> + for (const std::pair<const StringRef, BaseClassDescriptor> &BCDPair : BCDs) {<br>
<br>
and here<br>
<br>
> StringRef BCDName = BCDPair.first;<br>
> const BaseClassDescriptor &BCD = BCDPair.second;<br>
> outs() << BCDName << "[TypeDescriptor]: " << BCD.Symbols[0] << '\n';<br>
> @@ -400,7 +403,7 @@ static void dumpCXXData(const ObjectFile<br>
> outs() << BCDName << "[ClassHierarchyDescriptor]: " << BCD.Symbols[1]<br>
> << '\n';<br>
> }<br>
> - for (const std::pair<StringRef, TypeDescriptor> &TDPair : TDs) {<br>
> + for (const std::pair<const StringRef, TypeDescriptor> &TDPair : TDs) {<br>
<br>
and here<br>
<br>
> StringRef TDName = TDPair.first;<br>
> const TypeDescriptor &TD = TDPair.second;<br>
> outs() << TDName << "[VFPtr]: " << TD.Symbols[0] << '\n';<br>
> @@ -410,7 +413,7 @@ static void dumpCXXData(const ObjectFile<br>
> /*UseHexEscapes=*/true)<br>
> << '\n';<br>
> }<br>
> - for (const std::pair<StringRef, ThrowInfo> &TIPair : TIs) {<br>
> + for (const std::pair<const StringRef, ThrowInfo> &TIPair : TIs) {<br>
<br>
and here<br>
<br>
> StringRef TIName = TIPair.first;<br>
> const ThrowInfo &TI = TIPair.second;<br>
> auto dumpThrowInfoFlag = [&](const char *Name, uint32_t Flag) {<br>
> @@ -429,7 +432,7 @@ static void dumpCXXData(const ObjectFile<br>
> dumpThrowInfoSymbol("ForwardCompat", 8);<br>
> dumpThrowInfoSymbol("CatchableTypeArray", 12);<br>
> }<br>
> - for (const std::pair<StringRef, CatchableTypeArray> &CTAPair : CTAs) {<br>
> + for (const std::pair<const StringRef, CatchableTypeArray> &CTAPair : CTAs) {<br>
<br>
And here<br>
<br>
> StringRef CTAName = CTAPair.first;<br>
> const CatchableTypeArray &CTA = CTAPair.second;<br>
><br>
> @@ -441,7 +444,7 @@ static void dumpCXXData(const ObjectFile<br>
> I != E; ++I)<br>
> outs() << CTAName << '[' << Idx++ << "]: " << I->second << '\n';<br>
> }<br>
> - for (const std::pair<StringRef, CatchableType> &CTPair : CTs) {<br>
> + for (const std::pair<const StringRef, CatchableType> &CTPair : CTs) {<br>
<br>
And here<br>
<br>
> StringRef CTName = CTPair.first;<br>
> const CatchableType &CT = CTPair.second;<br>
> auto dumpCatchableTypeFlag = [&](const char *Name, uint32_t Flag) {<br>
> @@ -464,14 +467,14 @@ static void dumpCXXData(const ObjectFile<br>
> << "[CopyCtor]: " << (CT.Symbols[1].empty() ? "null" : CT.Symbols[1])<br>
> << '\n';<br>
> }<br>
> - for (const std::pair<std::pair<StringRef, uint64_t>, StringRef> &VTTPair :<br>
> - VTTEntries) {<br>
> + for (const std::pair<const std::pair<StringRef, uint64_t>, StringRef><br>
<br>
And here<br>
<br>
> + &VTTPair : VTTEntries) {<br>
> StringRef VTTName = VTTPair.first.first;<br>
> uint64_t VTTOffset = VTTPair.first.second;<br>
> StringRef VTTEntry = VTTPair.second;<br>
> outs() << VTTName << '[' << VTTOffset << "]: " << VTTEntry << '\n';<br>
> }<br>
> - for (const std::pair<StringRef, StringRef> &TIPair : TINames) {<br>
> + for (const std::pair<const StringRef, StringRef> &TIPair : TINames) {<br>
<br>
And here<br>
<br>
> StringRef TIName = TIPair.first;<br>
> outs() << TIName << ": " << TIPair.second << '\n';<br>
> }<br>
><br>
> Modified: llvm/trunk/utils/TableGen/CodeGenRegisters.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenRegisters.cpp?rev=234963&r1=234962&r2=234963&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenRegisters.cpp?rev=234963&r1=234962&r2=234963&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/utils/TableGen/CodeGenRegisters.cpp (original)<br>
> +++ llvm/trunk/utils/TableGen/CodeGenRegisters.cpp Tue Apr 14 20:21:15 2015<br>
> @@ -1780,7 +1780,7 @@ void CodeGenRegBank::computeRegUnitLaneM<br>
> const CodeGenRegister *SubRegister = S->second;<br>
> unsigned LaneMask = SubRegIndex->LaneMask;<br>
> // Distribute LaneMask to Register Units touched.<br>
> - for (const auto &SUI : SubRegister->getRegUnits()) {<br>
> + for (unsigned SUI : SubRegister->getRegUnits()) {<br>
> bool Found = false;<br>
> unsigned u = 0;<br>
> for (unsigned RU : RegUnits) {<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" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>