diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-01-06 00:29:28 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-01-06 00:29:28 +0000 |
| commit | 7725526de1fe4b01f79bf2f0a8580ecf82c14394 (patch) | |
| tree | 3ceb65b50e5d608a401d5365ccb995e121e05812 /llvm/lib/CodeGen/MachineInstr.cpp | |
| parent | c075acbb54f39e7c971c34505847f59428eb0d14 (diff) | |
| download | bcm5719-llvm-7725526de1fe4b01f79bf2f0a8580ecf82c14394.tar.gz bcm5719-llvm-7725526de1fe4b01f79bf2f0a8580ecf82c14394.zip | |
Add <imp-def> and <imp-kill> operands when replacing virtual sub-register defs and kills.
An instruction like this:
%reg1097:1<def> = VMOVSR %R3<kill>, 14, %reg0
Must be replaced with this when substituting physical registers:
%S0<def> = VMOVSR %R3<kill>, 14, %reg0, %D0<imp-def>
llvm-svn: 92812
Diffstat (limited to 'llvm/lib/CodeGen/MachineInstr.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/MachineInstr.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp index 358ea3fd71a..f9c20e64730 100644 --- a/llvm/lib/CodeGen/MachineInstr.cpp +++ b/llvm/lib/CodeGen/MachineInstr.cpp @@ -1314,3 +1314,12 @@ bool MachineInstr::addRegisterDead(unsigned IncomingReg, true /*IsDead*/)); return true; } + +void MachineInstr::addRegisterDefined(unsigned IncomingReg, + const TargetRegisterInfo *RegInfo) { + MachineOperand *MO = findRegisterDefOperand(IncomingReg, false, RegInfo); + if (!MO || MO->getSubReg()) + addOperand(MachineOperand::CreateReg(IncomingReg, + true /*IsDef*/, + true /*IsImp*/)); +} |

