Index: llvm/trunk/lib/Target/SystemZ/SystemZFrameLowering.cpp =================================================================== --- llvm/trunk/lib/Target/SystemZ/SystemZFrameLowering.cpp +++ llvm/trunk/lib/Target/SystemZ/SystemZFrameLowering.cpp @@ -81,6 +81,12 @@ 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) Index: llvm/trunk/test/DebugInfo/SystemZ/eh_frame_personality.ll =================================================================== --- llvm/trunk/test/DebugInfo/SystemZ/eh_frame_personality.ll +++ llvm/trunk/test/DebugInfo/SystemZ/eh_frame_personality.ll @@ -20,7 +20,9 @@ ; 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