diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp b/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp index 865ce0320e5..adb96fa15cb 100644 --- a/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp +++ b/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp @@ -168,11 +168,13 @@ void SystemZInstrInfo::expandRIEPseudo(MachineInstr &MI, unsigned LowOpcode,    if (!DestIsHigh && !SrcIsHigh)      MI.setDesc(get(LowOpcodeK));    else { -    emitGRX32Move(*MI.getParent(), MI, MI.getDebugLoc(), DestReg, SrcReg, -                  SystemZ::LR, 32, MI.getOperand(1).isKill(), -                  MI.getOperand(1).isUndef()); +    if (DestReg != SrcReg) { +      emitGRX32Move(*MI.getParent(), MI, MI.getDebugLoc(), DestReg, SrcReg, +                    SystemZ::LR, 32, MI.getOperand(1).isKill(), +                    MI.getOperand(1).isUndef()); +      MI.getOperand(1).setReg(DestReg); +    }      MI.setDesc(get(DestIsHigh ? HighOpcode : LowOpcode)); -    MI.getOperand(1).setReg(DestReg);      MI.tieOperands(0, 1);    }  }  | 

