summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveVariables.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/LiveVariables.cpp')
-rw-r--r--llvm/lib/CodeGen/LiveVariables.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/LiveVariables.cpp b/llvm/lib/CodeGen/LiveVariables.cpp
index 78ede3e748d..b153260c2b5 100644
--- a/llvm/lib/CodeGen/LiveVariables.cpp
+++ b/llvm/lib/CodeGen/LiveVariables.cpp
@@ -527,9 +527,14 @@ void LiveVariables::runOnInstr(MachineInstr *MI,
MO.setIsKill(false);
if (MO.readsReg())
UseRegs.push_back(MOReg);
- } else /*MO.isDef()*/ {
- if (!(TargetRegisterInfo::isPhysicalRegister(MOReg) &&
- MRI->isReserved(MOReg)))
+ } else {
+ assert(MO.isDef());
+ // FIXME: We should not remove any dead flags. Howeve the MIPS RDDSP
+ // instruction needs it at the moment: RDDSP gets its implicit use
+ // operands added too late in the processing so InstrEmitter adds an
+ // incorrect dead flag because the uses are not yet visible.
+ if (TargetRegisterInfo::isPhysicalRegister(MOReg) &&
+ !MRI->isReserved(MOReg))
MO.setIsDead(false);
DefRegs.push_back(MOReg);
}
OpenPOWER on IntegriCloud