Subzero: Auto-awesome iterators.

Use C++11 'auto' where practical to make iteration more concise.
Use C++11 range-based for loops where possible.

BUG= none
R=jfb@chromium.org, kschimpf@google.com

Review URL: https://codereview.chromium.org/619893002
diff --git a/src/IceOperand.cpp b/src/IceOperand.cpp
index 3614725..26ef830 100644
--- a/src/IceOperand.cpp
+++ b/src/IceOperand.cpp
@@ -123,13 +123,12 @@
 
 bool LiveRange::overlaps(InstNumberT OtherBegin) const {
   bool Result = false;
-  for (RangeType::const_iterator I = Range.begin(), E = Range.end(); I != E;
-       ++I) {
-    if (OtherBegin < I->first) {
+  for (const RangeElementType &I : Range) {
+    if (OtherBegin < I.first) {
       Result = false;
       break;
     }
-    if (OtherBegin < I->second) {
+    if (OtherBegin < I.second) {
       Result = true;
       break;
     }
@@ -148,9 +147,8 @@
 // number.  This is only used for validating the live range
 // calculation.
 bool LiveRange::containsValue(InstNumberT Value) const {
-  for (RangeType::const_iterator I = Range.begin(), E = Range.end(); I != E;
-       ++I) {
-    if (I->first <= Value && Value <= I->second)
+  for (const RangeElementType &I : Range) {
+    if (I.first <= Value && Value <= I.second)
       return true;
   }
   return false;
@@ -282,11 +280,7 @@
   Metadata.resize(Func->getNumVariables());
 
   // Mark implicit args as being used in the entry node.
-  const VarList &ImplicitArgList = Func->getImplicitArgs();
-  for (VarList::const_iterator I = ImplicitArgList.begin(),
-                               E = ImplicitArgList.end();
-       I != E; ++I) {
-    const Variable *Var = *I;
+  for (Variable *Var : Func->getImplicitArgs()) {
     const Inst *NoInst = NULL;
     const CfgNode *EntryNode = Func->getEntryNode();
     const bool IsFromDef = false;
@@ -297,30 +291,28 @@
   SizeT NumNodes = Func->getNumNodes();
   for (SizeT N = 0; N < NumNodes; ++N) {
     CfgNode *Node = Func->getNodes()[N];
-    const InstList &Insts = Node->getInsts();
-    for (InstList::const_iterator I = Insts.begin(), E = Insts.end(); I != E;
-         ++I) {
-      if ((*I)->isDeleted())
+    for (Inst *I : Node->getInsts()) {
+      if (I->isDeleted())
         continue;
-      if (InstFakeKill *Kill = llvm::dyn_cast<InstFakeKill>(*I)) {
+      if (InstFakeKill *Kill = llvm::dyn_cast<InstFakeKill>(I)) {
         // A FakeKill instruction indicates certain Variables (usually
         // physical scratch registers) are redefined, so we register
         // them as defs.
-        for (SizeT SrcNum = 0; SrcNum < (*I)->getSrcSize(); ++SrcNum) {
-          Variable *Var = llvm::cast<Variable>((*I)->getSrc(SrcNum));
+        for (SizeT SrcNum = 0; SrcNum < I->getSrcSize(); ++SrcNum) {
+          Variable *Var = llvm::cast<Variable>(I->getSrc(SrcNum));
           SizeT VarNum = Var->getIndex();
           assert(VarNum < Metadata.size());
           Metadata[VarNum].markDef(Kill, Node);
         }
         continue; // no point in executing the rest
       }
-      if (Variable *Dest = (*I)->getDest()) {
+      if (Variable *Dest = I->getDest()) {
         SizeT DestNum = Dest->getIndex();
         assert(DestNum < Metadata.size());
-        Metadata[DestNum].markDef(*I, Node);
+        Metadata[DestNum].markDef(I, Node);
       }
-      for (SizeT SrcNum = 0; SrcNum < (*I)->getSrcSize(); ++SrcNum) {
-        Operand *Src = (*I)->getSrc(SrcNum);
+      for (SizeT SrcNum = 0; SrcNum < I->getSrcSize(); ++SrcNum) {
+        Operand *Src = I->getSrc(SrcNum);
         SizeT NumVars = Src->getNumVars();
         for (SizeT J = 0; J < NumVars; ++J) {
           const Variable *Var = Src->getVar(J);
@@ -328,7 +320,7 @@
           assert(VarNum < Metadata.size());
           const bool IsFromDef = false;
           const bool IsImplicit = false;
-          Metadata[VarNum].markUse(*I, Node, IsFromDef, IsImplicit);
+          Metadata[VarNum].markUse(I, Node, IsFromDef, IsImplicit);
         }
       }
     }
@@ -440,11 +432,12 @@
 
 void LiveRange::dump(Ostream &Str) const {
   Str << "(weight=" << Weight << ") ";
-  for (RangeType::const_iterator I = Range.begin(), E = Range.end(); I != E;
-       ++I) {
-    if (I != Range.begin())
+  bool First = true;
+  for (const RangeElementType &I : Range) {
+    if (First)
       Str << ", ";
-    Str << "[" << (*I).first << ":" << (*I).second << ")";
+    First = false;
+    Str << "[" << I.first << ":" << I.second << ")";
   }
 }