forked from OSchip/llvm-project
[ARM] Fix SJLJ exception handling when manually chosen on a platform where it isn't default
Differential Revision: https://reviews.llvm.org/D38252 llvm-svn: 314450
This commit is contained in:
parent
5c3e8a450e
commit
adceba59a2
|
@ -150,7 +150,9 @@ void ARMSubtarget::initializeEnvironment() {
|
|||
// MCAsmInfo isn't always present (e.g. in opt) so we can't initialize this
|
||||
// directly from it, but we can try to make sure they're consistent when both
|
||||
// available.
|
||||
UseSjLjEH = isTargetDarwin() && !isTargetWatchABI();
|
||||
UseSjLjEH = (isTargetDarwin() && !isTargetWatchABI() &&
|
||||
Options.ExceptionModel == ExceptionHandling::None) ||
|
||||
Options.ExceptionModel == ExceptionHandling::SjLj;
|
||||
assert((!TM.getMCAsmInfo() ||
|
||||
(TM.getMCAsmInfo()->getExceptionHandlingType() ==
|
||||
ExceptionHandling::SjLj) == UseSjLjEH) &&
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
; RUN: llc -mtriple=armv7-apple-ios -O3 < %s | FileCheck %s
|
||||
; RUN: llc -mtriple=armv7-apple-watchos -O3 < %s | FileCheck %s
|
||||
; RUN: llc -mtriple=armv7k-apple-ios < %s | FileCheck %s --check-prefix=CHECK-WATCH
|
||||
; RUN: llc -mtriple=armv7-linux -exception-model sjlj -O3 < %s | FileCheck %s --check-prefix=CHECK-LINUX
|
||||
|
||||
; SjLjEHPrepare shouldn't crash when lowering empty structs.
|
||||
;
|
||||
|
@ -17,6 +18,12 @@ entry:
|
|||
; CHECK: bl __Unwind_SjLj_Register
|
||||
; CHECK-NEXT: {{[A-Z][a-zA-Z0-9]*}}:
|
||||
; CHECK-NEXT: bl _bar
|
||||
; CHECK: bl __Unwind_SjLj_Resume
|
||||
|
||||
; CHECK-LINUX: bl _Unwind_SjLj_Register
|
||||
; CHECK-LINUX-NEXT: .{{[A-Z][a-zA-Z0-9]*}}:
|
||||
; CHECK-LINUX-NEXT: bl bar
|
||||
; CHECK-LINUX: bl _Unwind_SjLj_Resume
|
||||
|
||||
; CHECK-WATCH-NOT: bl __Unwind_SjLj_Register
|
||||
|
||||
|
|
Loading…
Reference in New Issue