mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-15 07:59:57 +00:00
X86: loosen an overly aggressive MachO assertion
We would assert that the FP setup CFI used esp/rsp always. This held up in practice when the code was generated from IR. However, with the integrated assembler, it is possible to have the input be user specified assembly. In such a case, we cannot assume that the function implementation has a compact unwind representation. Loosen the assertion into a check and bail if we cannot represent the frame pointer in the compact unwinding. Addresses PR30453! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281986 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
663e1b0cfc
commit
6530b2f3a0
@ -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));
|
||||
|
11
test/MC/X86/fp-setup-macho.s
Normal file
11
test/MC/X86/fp-setup-macho.s
Normal file
@ -0,0 +1,11 @@
|
||||
// RUN: llvm-mc -triple x86_64-apple-macho -filetype obj -o - %s | llvm-readobj -sections | FileCheck %s
|
||||
|
||||
_label:
|
||||
.cfi_startproc
|
||||
.cfi_def_cfa_register rsp
|
||||
.cfi_endproc
|
||||
|
||||
// CHECK: Section {
|
||||
// CHECK: Name: __eh_frame
|
||||
// CHECK: }
|
||||
|
Loading…
Reference in New Issue
Block a user