diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp index 524b48b9aab..1bde4bcfa29 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp @@ -546,8 +546,12 @@ protected: // .cfi_def_cfa_register %rbp // HasFP = true; - assert(MRI.getLLVMRegNum(Inst.getRegister(), true) == - (Is64Bit ? X86::RBP : X86::EBP) && "Invalid frame pointer!"); + + // If the frame pointer is other than esp/rsp, we do not have a way to + // generate a compact unwinding representation, so bail out. + if (MRI.getLLVMRegNum(Inst.getRegister(), true) != + (Is64Bit ? X86::RBP : X86::EBP)) + return 0; // Reset the counts. memset(SavedRegs, 0, sizeof(SavedRegs)); |