Check that a live range exists before shortening it. This fixes PR8989.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 20 Jan 2011 06:20:02 +0000 (06:20 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 20 Jan 2011 06:20:02 +0000 (06:20 +0000)
The live range may have been deleted earlier because of rematerialization.

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

lib/CodeGen/SimpleRegisterCoalescing.cpp

index e616d3536fe91d57f6b40b32cd0a13e21298c969..a859f6e0745456cd4f9041ef3ef45c6dbe2cd701 100644 (file)
@@ -1685,9 +1685,11 @@ bool SimpleRegisterCoalescing::runOnMachineFunction(MachineFunction &fn) {
           DoDelete = false;
         
         if (MI->allDefsAreDead()) {
-          LiveInterval &li = li_->getInterval(SrcReg);
-          if (!ShortenDeadCopySrcLiveRange(li, MI))
-            ShortenDeadCopyLiveRange(li, MI);
+          if (li_->hasInterval(SrcReg)) {
+            LiveInterval &li = li_->getInterval(SrcReg);
+            if (!ShortenDeadCopySrcLiveRange(li, MI))
+              ShortenDeadCopyLiveRange(li, MI);
+          }
           DoDelete = true;
         }
         if (!DoDelete) {