LiveInterval: Document and enforce rules about empty subranges.
[oota-llvm.git] / lib / CodeGen / LiveIntervalAnalysis.cpp
index ee7c1d303153ba6dd221e657b2c0d1edf7b27950..9738dac65ad8e6fa351f4809d92930ffb5ae9caa 100644 (file)
@@ -403,9 +403,14 @@ bool LiveIntervals::shrinkToUses(LiveInterval *li,
          && "Can only shrink virtual registers");
 
   // Shrink subregister live ranges.
+  bool NeedsCleanup = false;
   for (LiveInterval::SubRange &S : li->subranges()) {
     shrinkToUses(S, li->reg);
+    if (S.empty())
+      NeedsCleanup = true;
   }
+  if (NeedsCleanup)
+    li->removeEmptySubRanges();
 
   // Find all the values used, including PHI kills.
   ShrinkToUsesWorkList WorkList;