diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2010-05-11 00:20:03 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2010-05-11 00:20:03 +0000 |
| commit | 1ef066083617570b4284018b9b0257ab2b5a6590 (patch) | |
| tree | b88932b215f64d2b9f21e9262e550527363119b6 /llvm/lib/CodeGen/ProcessImplicitDefs.cpp | |
| parent | b58b6f9a852da85f4f567dffa55f6818f72c9b94 (diff) | |
| download | bcm5719-llvm-1ef066083617570b4284018b9b0257ab2b5a6590.tar.gz bcm5719-llvm-1ef066083617570b4284018b9b0257ab2b5a6590.zip | |
It's not safe eliminate copies where src and dst have different sub-register indices.
llvm-svn: 103450
Diffstat (limited to 'llvm/lib/CodeGen/ProcessImplicitDefs.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/ProcessImplicitDefs.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/ProcessImplicitDefs.cpp b/llvm/lib/CodeGen/ProcessImplicitDefs.cpp index 75875d2835b..62f525fa1d9 100644 --- a/llvm/lib/CodeGen/ProcessImplicitDefs.cpp +++ b/llvm/lib/CodeGen/ProcessImplicitDefs.cpp @@ -46,7 +46,7 @@ bool ProcessImplicitDefs::CanTurnIntoImplicitDef(MachineInstr *MI, const TargetInstrInfo *tii_) { unsigned SrcReg, DstReg, SrcSubReg, DstSubReg; if (tii_->isMoveInstr(*MI, SrcReg, DstReg, SrcSubReg, DstSubReg) && - Reg == SrcReg) + Reg == SrcReg && SrcSubReg == 0 && DstSubReg == 0) return true; if (OpIdx == 2 && MI->isSubregToReg()) @@ -220,7 +220,7 @@ bool ProcessImplicitDefs::runOnMachineFunction(MachineFunction &fn) { // Turn a copy use into an implicit_def. unsigned SrcReg, DstReg, SrcSubReg, DstSubReg; if (tii_->isMoveInstr(*RMI, SrcReg, DstReg, SrcSubReg, DstSubReg) && - Reg == SrcReg) { + Reg == SrcReg && SrcSubReg == 0 && DstSubReg == 0) { RMI->setDesc(tii_->get(TargetOpcode::IMPLICIT_DEF)); bool isKill = false; |

