summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCDwarf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/MC/MCDwarf.cpp')
-rw-r--r--llvm/lib/MC/MCDwarf.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp
index 7093446815f..66dfe7b7fa4 100644
--- a/llvm/lib/MC/MCDwarf.cpp
+++ b/llvm/lib/MC/MCDwarf.cpp
@@ -1418,7 +1418,12 @@ void FrameEmitterImpl::EmitCFIInstruction(const MCCFIInstruction &Instr) {
unsigned Reg = Instr.getRegister();
if (!IsEH)
Reg = MRI->getDwarfRegNumFromDwarfEHRegNum(Reg);
- Streamer.EmitIntValue(dwarf::DW_CFA_restore | Reg, 1);
+ if (Reg < 64) {
+ Streamer.EmitIntValue(dwarf::DW_CFA_restore | Reg, 1);
+ } else {
+ Streamer.EmitIntValue(dwarf::DW_CFA_restore_extended, 1);
+ Streamer.EmitULEB128IntValue(Reg);
+ }
return;
}
case MCCFIInstruction::OpGnuArgsSize:
OpenPOWER on IntegriCloud