Renumber SlotIndexes locally when a new block is inserted.
authorCameron Zwarich <zwarich@apple.com>
Tue, 12 Feb 2013 03:49:22 +0000 (03:49 +0000)
committerCameron Zwarich <zwarich@apple.com>
Tue, 12 Feb 2013 03:49:22 +0000 (03:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174937 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/SlotIndexes.h

index d4e8c20a318676b9ac65cb367765b356fd0d8534..76c1cea25237f7f62c7d25e43b3afde16a4722cb 100644 (file)
@@ -605,14 +605,15 @@ namespace llvm {
 
       IndexListEntry *startEntry = 0;
       IndexListEntry *endEntry = 0;
+      IndexList::iterator newItr;
       if (nextMBB == mbb->getParent()->end()) {
         startEntry = &indexList.back();
         endEntry = createEntry(0, 0);
-        indexList.insertAfter(startEntry, endEntry);
+        newItr = indexList.insertAfter(startEntry, endEntry);
       } else {
         startEntry = createEntry(0, 0);
         endEntry = getMBBStartIdx(nextMBB).listEntry();
-        indexList.insert(endEntry, startEntry);
+        newItr = indexList.insert(endEntry, startEntry);
       }
 
       SlotIndex startIdx(startEntry, SlotIndex::Slot_Block);
@@ -629,9 +630,7 @@ namespace llvm {
       MBBRanges.push_back(std::make_pair(startIdx, endIdx));
       idx2MBBMap.push_back(IdxMBBPair(startIdx, mbb));
 
-      // FIXME: Renumber locally instead of renumbering the whole function every
-      // time a new block is inserted.
-      renumberIndexes();
+      renumberIndexes(newItr);
       std::sort(idx2MBBMap.begin(), idx2MBBMap.end(), Idx2MBBCompare());
     }