<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 22, 2014 at 9:51 AM, Diego Novillo <span dir="ltr"><<a href="mailto:dnovillo@google.com" target="_blank">dnovillo@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dnovillo<br>
Date: Wed Oct 22 11:51:50 2014<br>
New Revision: 220394<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=220394&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=220394&view=rev</a><br>
Log:<br>
Use auto iteration in lib/Transforms/Scalar/SampleProfile.cpp. No functional changes.<br>
<br>
Modified:<br>
    llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp?rev=220394&r1=220393&r2=220394&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp?rev=220394&r1=220393&r2=220394&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/SampleProfile.cpp Wed Oct 22 11:51:50 2014<br>
@@ -249,8 +249,8 @@ unsigned SampleProfileLoader::getBlockWe<br>
<br>
   // Otherwise, compute and cache B's weight.<br>
   unsigned Weight = 0;<br>
-  for (BasicBlock::iterator I = B->begin(), E = B->end(); I != E; ++I) {<br>
-    unsigned InstWeight = getInstWeight(*I);<br>
+  for (auto &I : B->getInstList()) {<br>
+    unsigned InstWeight = getInstWeight(I);<br>
     if (InstWeight > Weight)<br>
       Weight = InstWeight;<br>
   }<br>
@@ -267,7 +267,7 @@ unsigned SampleProfileLoader::getBlockWe<br>
 bool SampleProfileLoader::computeBlockWeights(Function &F) {<br>
   bool Changed = false;<br>
   DEBUG(dbgs() << "Block weights\n");<br>
-  for (Function::iterator B = F.begin(), E = F.end(); B != E; ++B) {<br>
+  for (auto B = F.begin(), E = F.end(); B != E; ++B) {<br></blockquote><div><br>for (auto &B : F) {<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     unsigned Weight = getBlockWeight(B);<br></blockquote><div><br>& you could change getBlockWeight to take a (possibly const?) BasicBlock& instead of a BasicBlock*<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     Changed |= (Weight > 0);<br>
     DEBUG(printBlockWeight(dbgs(), B));<br></blockquote><div><br>& similarly here for printBlockWeight (pass by ref instead of pointer)<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
@@ -302,9 +302,7 @@ bool SampleProfileLoader::computeBlockWe<br>
 void SampleProfileLoader::findEquivalencesFor(<br>
     BasicBlock *BB1, SmallVector<BasicBlock *, 8> Descendants,<br>
     DominatorTreeBase<BasicBlock> *DomTree) {<br>
-  for (SmallVectorImpl<BasicBlock *>::iterator I = Descendants.begin(),<br>
-                                               E = Descendants.end();<br>
-       I != E; ++I) {<br>
+  for (auto I = Descendants.begin(), E = Descendants.end(); I != E; ++I) {<br>
     BasicBlock *BB2 = *I;<br></blockquote><div><br>for (auto *BB2 : Descendants) {<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     bool IsDomParent = DomTree->dominates(BB2, BB1);<br>
     bool IsInSameLoop = LI->getLoopFor(BB1) == LI->getLoopFor(BB2);<br>
@@ -340,7 +338,7 @@ void SampleProfileLoader::findEquivalenc<br>
   SmallVector<BasicBlock *, 8> DominatedBBs;<br>
   DEBUG(dbgs() << "\nBlock equivalence classes\n");<br>
   // Find equivalence sets based on dominance and post-dominance information.<br>
-  for (Function::iterator B = F.begin(), E = F.end(); B != E; ++B) {<br>
+  for (auto B = F.begin(), E = F.end(); B != E; ++B) {<br>
     BasicBlock *BB1 = B; </blockquote><div><br>for (auto &BB1 : F) {<br><br>Or, if there are lots of pointer uses you don't want to add '&' to:<br><br>for (auto &B : F) {<br>  auto *BB1 = &B;<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
     // Compute BB1's equivalence class once.<br>
@@ -388,7 +386,7 @@ void SampleProfileLoader::findEquivalenc<br>
   // each equivalence class has the largest weight, assign that weight<br>
   // to all the blocks in that equivalence class.<br>
   DEBUG(dbgs() << "\nAssign the same weight to all blocks in the same class\n");<br>
-  for (Function::iterator B = F.begin(), E = F.end(); B != E; ++B) {<br>
+  for (auto B = F.begin(), E = F.end(); B != E; ++B) {<br>
     BasicBlock *BB = B;<br></blockquote><div><br>Similar to above and the rest of this.<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     BasicBlock *EquivBB = EquivalenceClass[BB];<br>
     if (BB != EquivBB)<br>
@@ -432,7 +430,7 @@ unsigned SampleProfileLoader::visitEdge(<br>
 bool SampleProfileLoader::propagateThroughEdges(Function &F) {<br>
   bool Changed = false;<br>
   DEBUG(dbgs() << "\nPropagation through edges\n");<br>
-  for (Function::iterator BI = F.begin(), EI = F.end(); BI != EI; ++BI) {<br>
+  for (auto BI = F.begin(), EI = F.end(); BI != EI; ++BI) {<br>
     BasicBlock *BB = BI;<br>
<br>
     // Visit all the predecessor and successor edges to determine<br>
@@ -447,16 +445,16 @@ bool SampleProfileLoader::propagateThrou<br>
<br>
       if (i == 0) {<br>
         // First, visit all predecessor edges.<br>
-        for (size_t I = 0; I < Predecessors[BB].size(); I++) {<br>
-          Edge E = std::make_pair(Predecessors[BB][I], BB);<br>
+        for (auto *Pred : Predecessors[BB]) {<br>
+          Edge E = std::make_pair(Pred, BB);<br>
           TotalWeight += visitEdge(E, &NumUnknownEdges, &UnknownEdge);<br>
           if (E.first == E.second)<br>
             SelfReferentialEdge = E;<br>
         }<br>
       } else {<br>
         // On the second round, visit all successor edges.<br>
-        for (size_t I = 0; I < Successors[BB].size(); I++) {<br>
-          Edge E = std::make_pair(BB, Successors[BB][I]);<br>
+        for (auto *Succ : Successors[BB]) {<br>
+          Edge E = std::make_pair(BB, Succ);<br>
           TotalWeight += visitEdge(E, &NumUnknownEdges, &UnknownEdge);<br>
         }<br>
       }<br>
@@ -534,7 +532,7 @@ bool SampleProfileLoader::propagateThrou<br>
 /// We are interested in unique edges. If a block B1 has multiple<br>
 /// edges to another block B2, we only add a single B1->B2 edge.<br>
 void SampleProfileLoader::buildEdges(Function &F) {<br>
-  for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I) {<br>
+  for (auto I = F.begin(), E = F.end(); I != E; ++I) {<br>
     BasicBlock *B1 = I;<br>
<br>
     // Add predecessors for B1.<br>
@@ -596,7 +594,7 @@ void SampleProfileLoader::propagateWeigh<br>
   // edge weights computed during propagation.<br>
   DEBUG(dbgs() << "\nPropagation complete. Setting branch weights\n");<br>
   MDBuilder MDB(F.getContext());<br>
-  for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I) {<br>
+  for (auto I = F.begin(), E = F.end(); I != E; ++I) {<br>
     BasicBlock *B = I;<br>
     TerminatorInst *TI = B->getTerminator();<br>
     if (TI->getNumSuccessors() == 1)<br>
@@ -638,10 +636,9 @@ void SampleProfileLoader::propagateWeigh<br>
 /// \returns a valid DISubprogram, if found. Otherwise, it returns an empty<br>
 /// DISubprogram.<br>
 static const DISubprogram getDISubprogram(Function &F, const LLVMContext &Ctx) {<br>
-  for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I) {<br>
+  for (auto I = F.begin(), E = F.end(); I != E; ++I) {<br>
     BasicBlock *B = I;<br>
-    for (BasicBlock::iterator BI = B->begin(), BE = B->end(); BI != BE; ++BI) {<br>
-      Instruction &Inst = *BI;<br>
+    for (auto &Inst : B->getInstList()) {<br>
       DebugLoc DLoc = Inst.getDebugLoc();<br>
       if (DLoc.isUnknown())<br>
         continue;<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>