mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 22:23:10 +00:00
Emit correct register move information in eh frames for X86. This allows Shootout-C++/except to pass on x86/linux
with non-llvm-compiled (e.g. "native") unwind runtime. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36647 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -226,6 +226,19 @@ X86TargetLowering::X86TargetLowering(TargetMachine &TM)
|
||||
!Subtarget->isTargetCygMing())
|
||||
setOperationAction(ISD::LABEL, MVT::Other, Expand);
|
||||
|
||||
setOperationAction(ISD::EXCEPTIONADDR, MVT::i64, Expand);
|
||||
setOperationAction(ISD::EHSELECTION, MVT::i64, Expand);
|
||||
setOperationAction(ISD::EXCEPTIONADDR, MVT::i32, Expand);
|
||||
setOperationAction(ISD::EHSELECTION, MVT::i32, Expand);
|
||||
if (Subtarget->is64Bit()) {
|
||||
// FIXME: Verify
|
||||
setExceptionPointerRegister(X86::RAX);
|
||||
setExceptionSelectorRegister(X86::RDX);
|
||||
} else {
|
||||
setExceptionPointerRegister(X86::EAX);
|
||||
setExceptionSelectorRegister(X86::EDX);
|
||||
}
|
||||
|
||||
// VASTART needs to be custom lowered to use the VarArgsFrameIndex
|
||||
setOperationAction(ISD::VASTART , MVT::Other, Custom);
|
||||
setOperationAction(ISD::VAARG , MVT::Other, Expand);
|
||||
|
||||
Reference in New Issue
Block a user