Ignore the cloning of unknown registers.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 14 Sep 2011 17:34:37 +0000 (17:34 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 14 Sep 2011 17:34:37 +0000 (17:34 +0000)
THe LRE_DidCloneVirtReg callback may be called with vitual registers
that RAGreedy doesn't even know about yet.  In that case, there are no
data structures to update.

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

lib/CodeGen/RegAllocGreedy.cpp

index 08767a0d0524321b9cbeb1a53545cddefa44b8a6..f54a2c85d1006dc802d450af2dbc880851f65f7a 100644 (file)
@@ -377,6 +377,10 @@ void RAGreedy::LRE_WillShrinkVirtReg(unsigned VirtReg) {
 }
 
 void RAGreedy::LRE_DidCloneVirtReg(unsigned New, unsigned Old) {
+  // Cloning a register we haven't even heard about yet?  Just ignore it.
+  if (!ExtraRegInfo.inBounds(Old))
+    return;
+
   // LRE may clone a virtual register because dead code elimination causes it to
   // be split into connected components. The new components are much smaller
   // than the original, so they should get a new chance at being assigned.