When rewriting defs and uses after spilling, don't set the weight of a
authorDavid Greene <greened@obbligato.org>
Thu, 22 May 2008 21:16:33 +0000 (21:16 +0000)
committerDavid Greene <greened@obbligato.org>
Thu, 22 May 2008 21:16:33 +0000 (21:16 +0000)
live interval to infinity if the instruction being rewritten is an
original remat def instruction.  We were only checking against the clone
of the remat def which doesn't actually appear in the IR at all.

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

lib/CodeGen/LiveIntervalAnalysis.cpp

index 2558b09ad60f124b9c1dc460f0cd3332893cfac1..4997302fa6a5f31aaf26fd3e8ae4f46b058876ce 100644 (file)
@@ -1150,7 +1150,9 @@ rewriteInstructionsForSpills(const LiveInterval &li, bool TrySplit,
     }
     MachineBasicBlock *MBB = MI->getParent();
 
-    if (ImpUse && MI != ReMatDefMI) {
+    // ReMatDefMI is a clone and not in the IR at all, so check
+    // RefMatOrigDefMI too.
+    if (ImpUse && MI != ReMatDefMI && MI != ReMatOrigDefMI) {
       // Re-matting an instruction with virtual register use. Update the
       // register interval's spill weight to HUGE_VALF to prevent it from
       // being spilled.