From abe93d95e8cc721a5b24b8225dc1a92569276c8a Mon Sep 17 00:00:00 2001 From: David Greene Date: Thu, 22 May 2008 21:16:33 +0000 Subject: [PATCH] When rewriting defs and uses after spilling, don't set the weight of a 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 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp index 2558b09ad60..4997302fa6a 100644 --- a/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -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. -- 2.34.1