aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/Sparc
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-11-15 20:58:11 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-11-15 20:58:11 +0000
commit6ce7dc2a97260eea5fba414332796464912b9359 (patch)
tree52d4ff3a3a1db471710e4957aa0068a4800edef8 /lib/Target/Sparc
parentddd2a4556a0b4d0e364de7087ccf1475fa23f39f (diff)
downloadexternal_llvm-6ce7dc2a97260eea5fba414332796464912b9359.zip
external_llvm-6ce7dc2a97260eea5fba414332796464912b9359.tar.gz
external_llvm-6ce7dc2a97260eea5fba414332796464912b9359.tar.bz2
Properly transfer kill / dead info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31765 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Sparc')
-rw-r--r--lib/Target/Sparc/SparcRegisterInfo.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/Target/Sparc/SparcRegisterInfo.cpp b/lib/Target/Sparc/SparcRegisterInfo.cpp
index bd2da73..1eee070 100644
--- a/lib/Target/Sparc/SparcRegisterInfo.cpp
+++ b/lib/Target/Sparc/SparcRegisterInfo.cpp
@@ -77,15 +77,16 @@ MachineInstr *SparcRegisterInfo::foldMemoryOperand(MachineInstr* MI,
unsigned OpNum,
int FI) const {
bool isFloat = false;
+ MachineInstr *NewMI = NULL;
switch (MI->getOpcode()) {
case SP::ORrr:
if (MI->getOperand(1).isRegister() && MI->getOperand(1).getReg() == SP::G0&&
MI->getOperand(0).isRegister() && MI->getOperand(2).isRegister()) {
if (OpNum == 0) // COPY -> STORE
- return BuildMI(TII, SP::STri, 3).addFrameIndex(FI).addImm(0)
+ NewMI = BuildMI(TII, SP::STri, 3).addFrameIndex(FI).addImm(0)
.addReg(MI->getOperand(2).getReg());
else // COPY -> LOAD
- return BuildMI(TII, SP::LDri, 2, MI->getOperand(0).getReg())
+ NewMI = BuildMI(TII, SP::LDri, 2, MI->getOperand(0).getReg())
.addFrameIndex(FI).addImm(0);
}
break;
@@ -94,14 +95,17 @@ MachineInstr *SparcRegisterInfo::foldMemoryOperand(MachineInstr* MI,
// FALLTHROUGH
case SP::FMOVD:
if (OpNum == 0) // COPY -> STORE
- return BuildMI(TII, isFloat ? SP::STFri : SP::STDFri, 3)
+ NewMI = BuildMI(TII, isFloat ? SP::STFri : SP::STDFri, 3)
.addFrameIndex(FI).addImm(0).addReg(MI->getOperand(1).getReg());
else // COPY -> LOAD
- return BuildMI(TII, isFloat ? SP::LDFri : SP::LDDFri, 2,
+ NewMI = BuildMI(TII, isFloat ? SP::LDFri : SP::LDDFri, 2,
MI->getOperand(0).getReg()).addFrameIndex(FI).addImm(0);
break;
}
- return 0;
+
+ if (NewMI)
+ NewMI->copyKillDeadInfo(MI);
+ return NewMI;
}
const unsigned* SparcRegisterInfo::getCalleeSaveRegs() const {