diff options
Diffstat (limited to 'llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp b/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp index adb96fa15cb..8b3428a840f 100644 --- a/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp +++ b/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp @@ -1179,13 +1179,13 @@ MachineInstr *SystemZInstrInfo::foldMemoryOperandImpl( MemOpcode = -1; else { assert(NumOps == 3 && "Expected two source registers."); - unsigned DstReg = MI.getOperand(0).getReg(); - unsigned DstPhys = + Register DstReg = MI.getOperand(0).getReg(); + Register DstPhys = (TRI->isVirtualRegister(DstReg) ? VRM->getPhys(DstReg) : DstReg); - unsigned SrcReg = (OpNum == 2 ? MI.getOperand(1).getReg() + Register SrcReg = (OpNum == 2 ? MI.getOperand(1).getReg() : ((OpNum == 1 && MI.isCommutable()) ? MI.getOperand(2).getReg() - : 0)); + : Register())); if (DstPhys && !SystemZ::GRH32BitRegClass.contains(DstPhys) && SrcReg && TRI->isVirtualRegister(SrcReg) && DstPhys == VRM->getPhys(SrcReg)) NeedsCommute = (OpNum == 1); |

