diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 17dd7ee7b81..b7cd3a0c2da 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -1071,10 +1071,12 @@ void ARMAsmPrinter::EmitUnwindingInstruction(const MachineInstr *MI) { MCTargetStreamer &TS = *OutStreamer->getTargetStreamer(); ARMTargetStreamer &ATS = static_cast<ARMTargetStreamer &>(TS); const MachineFunction &MF = *MI->getParent()->getParent(); - const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo(); + const TargetRegisterInfo *TargetRegInfo = + MF.getSubtarget().getRegisterInfo(); + const MachineRegisterInfo &MachineRegInfo = MF.getRegInfo(); const ARMFunctionInfo &AFI = *MF.getInfo<ARMFunctionInfo>(); - unsigned FramePtr = RegInfo->getFrameRegister(MF); + unsigned FramePtr = TargetRegInfo->getFrameRegister(MF); unsigned Opc = MI->getOpcode(); unsigned SrcReg, DstReg; @@ -1131,7 +1133,9 @@ void ARMAsmPrinter::EmitUnwindingInstruction(const MachineInstr *MI) { if (MO.isUndef()) { assert(RegList.empty() && "Pad registers must come before restored ones"); - Pad += 4; + unsigned Width = + TargetRegInfo->getRegSizeInBits(MO.getReg(), MachineRegInfo) / 8; + Pad += Width; continue; } RegList.push_back(MO.getReg()); |

