We don't need to scan the blocks that we are live-in on every
access. Rather we only have to do it on the creation of the interval.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11135 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp
index bef7653..f1bb499 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.cpp
+++ b/lib/CodeGen/LiveIntervalAnalysis.cpp
@@ -162,23 +162,24 @@
         // update interval index for this register
         r2iMap_.insert(r2iit, std::make_pair(reg, --intervals_.end()));
         interval = &intervals_.back();
+
+        // iterate over all of the blocks that the variable is
+        // completely live in, adding them to the live
+        // interval. obviously we only need to do this once.
+        for (unsigned i = 0, e = vi.AliveBlocks.size(); i != e; ++i) {
+            if (vi.AliveBlocks[i]) {
+                MachineBasicBlock* mbb = lv_->getIndexMachineBasicBlock(i);
+                if (!mbb->empty()) {
+                    interval->addRange(getInstructionIndex(mbb->front()),
+                                       getInstructionIndex(mbb->back()) + 1);
+                }
+            }
+        }
     }
     else {
         interval = &*r2iit->second;
     }
 
-    // iterate over all of the blocks that the variable is completely
-    // live in, adding them to the live interval
-    for (unsigned i = 0, e = vi.AliveBlocks.size(); i != e; ++i) {
-        if (vi.AliveBlocks[i]) {
-            MachineBasicBlock* mbb = lv_->getIndexMachineBasicBlock(i);
-            if (!mbb->empty()) {
-                interval->addRange(getInstructionIndex(mbb->front()),
-                                   getInstructionIndex(mbb->back()) + 1);
-            }
-        }
-    }
-
     bool killedInDefiningBasicBlock = false;
     for (int i = 0, e = vi.Kills.size(); i != e; ++i) {
         MachineBasicBlock* killerBlock = vi.Kills[i].first;