From 234e5a809b49f93c16d0b279ce3d602c146743c5 Mon Sep 17 00:00:00 2001 From: Marcin Koscielnicki Date: Tue, 28 Jun 2016 14:13:11 +0000 Subject: [SystemZ] Save/restore r6 and r7 if function contains landing pad. This fixes PR27102. Differential Revision: http://reviews.llvm.org/D18541 llvm-svn: 274017 --- llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp') diff --git a/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp b/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp index a1f036d68ec..ccaed49475c 100644 --- a/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp +++ b/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp @@ -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) -- cgit v1.2.3