Don't allocate memory in LiveInterval::join().
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 20 Feb 2013 23:51:10 +0000 (23:51 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 20 Feb 2013 23:51:10 +0000 (23:51 +0000)
Rewrite value numbers directly in the 'Other' LiveInterval which is
moribund anyway. This avoids allocating the OtherAssignments vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175690 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/LiveInterval.cpp

index 54f0da008b7e0990112e7e18bbfe18dcaa4e798f..dccd847d070c8bbc74bdca81f2438d355fd1ec25 100644 (file)
@@ -464,10 +464,12 @@ void LiveInterval::join(LiveInterval &Other,
     ranges.erase(OutIt, end());
   }
 
-  // Remember assignements because val# ids are changing.
-  SmallVector<unsigned, 16> OtherAssignments;
+  // Rewrite Other values before changing the VNInfo ids.
+  // This can leave Other in an invalid state because we're not coalescing
+  // touching segments that now have identical values. That's OK since Other is
+  // not supposed to be valid after calling join();
   for (iterator I = Other.begin(), E = Other.end(); I != E; ++I)
-    OtherAssignments.push_back(RHSValNoAssignments[I->valno->id]);
+    I->valno = NewVNInfo[RHSValNoAssignments[I->valno->id]];
 
   // Update val# info. Renumber them and make sure they all belong to this
   // LiveInterval now. Also remove dead val#'s.
@@ -487,13 +489,8 @@ void LiveInterval::join(LiveInterval &Other,
 
   // Okay, now insert the RHS live ranges into the LHS.
   LiveRangeUpdater Updater(this);
-  unsigned RangeNo = 0;
-  for (iterator I = Other.begin(), E = Other.end(); I != E; ++I, ++RangeNo) {
-    // Map the valno in the other live range to the current live range.
-    VNInfo *VNI = NewVNInfo[OtherAssignments[RangeNo]];
-    assert(VNI && "Adding a dead range?");
-    Updater.add(I->start, I->end, VNI);
-  }
+  for (iterator I = Other.begin(), E = Other.end(); I != E; ++I)
+    Updater.add(*I);
 }
 
 /// MergeRangesInAsValue - Merge all of the intervals in RHS into this live