forked from OSchip/llvm-project
[SystemZ] Save/restore r6 and r7 if function contains landing pad.
This fixes PR27102. Differential Revision: http://reviews.llvm.org/D18541 llvm-svn: 274017
This commit is contained in:
parent
baf27df0bf
commit
234e5a809b
|
@ -81,6 +81,12 @@ void SystemZFrameLowering::determineCalleeSaves(MachineFunction &MF,
|
|||
for (unsigned I = MFI->getVarArgsFirstGPR(); I < SystemZ::NumArgGPRs; ++I)
|
||||
SavedRegs.set(SystemZ::ArgGPRs[I]);
|
||||
|
||||
// If there are any landing pads, entering them will modify r6/r7.
|
||||
if (!MF.getMMI().getLandingPads().empty()) {
|
||||
SavedRegs.set(SystemZ::R6D);
|
||||
SavedRegs.set(SystemZ::R7D);
|
||||
}
|
||||
|
||||
// If the function requires a frame pointer, record that the hard
|
||||
// frame pointer will be clobbered.
|
||||
if (HasFP)
|
||||
|
|
|
@ -20,7 +20,9 @@ clean:
|
|||
; CHECK-FUNC: .cfi_startproc
|
||||
; CHECK-FUNC: .cfi_personality 0, __gxx_personality_v0
|
||||
; CHECK-FUNC: .cfi_lsda 0, .Lexception0
|
||||
; CHECK-FUNC: stmg %r14, %r15, 112(%r15)
|
||||
; CHECK-FUNC: stmg %r6, %r15, 48(%r15)
|
||||
; CHECK-FUNC: .cfi_offset %r6, -112
|
||||
; CHECK-FUNC: .cfi_offset %r7, -104
|
||||
; CHECK-FUNC: .cfi_offset %r14, -48
|
||||
; CHECK-FUNC: .cfi_offset %r15, -40
|
||||
; CHECK-FUNC: aghi %r15, -160
|
||||
|
|
Loading…
Reference in New Issue