forked from OSchip/llvm-project
Driver: make it easier to select the SjLj EH model
GCC still permits enabling the SjLj EH model. This is something which can be done on various targets. Hoist the -fsjlj-exceptions option into the driver and pass it through. This allows one to opt into the alternative EH model while retaining the default to be the target's default. Resolves PR27749! llvm-svn: 272424
This commit is contained in:
parent
6c42aa777e
commit
094f17beeb
|
@ -527,8 +527,6 @@ def fblocks_runtime_optional : Flag<["-"], "fblocks-runtime-optional">,
|
|||
HelpText<"Weakly link in the blocks runtime">;
|
||||
def fexternc_nounwind : Flag<["-"], "fexternc-nounwind">,
|
||||
HelpText<"Assume all functions with C linkage do not unwind">;
|
||||
def fsjlj_exceptions : Flag<["-"], "fsjlj-exceptions">,
|
||||
HelpText<"Use SjLj style exceptions">;
|
||||
def split_dwarf_file : Separate<["-"], "split-dwarf-file">,
|
||||
HelpText<"File name to use for split dwarf debug info output">;
|
||||
def fno_wchar : Flag<["-"], "fno-wchar">,
|
||||
|
|
|
@ -584,6 +584,8 @@ def fencoding_EQ : Joined<["-"], "fencoding=">, Group<f_Group>;
|
|||
def ferror_limit_EQ : Joined<["-"], "ferror-limit=">, Group<f_Group>, Flags<[CoreOption]>;
|
||||
def fexceptions : Flag<["-"], "fexceptions">, Group<f_Group>, Flags<[CC1Option]>,
|
||||
HelpText<"Enable support for exception handling">;
|
||||
def fsjlj_exceptions : Flag<["-"], "fsjlj-exceptions">, Group<f_Group>,
|
||||
Flags<[CC1Option]>, HelpText<"Use SjLj style exceptions">;
|
||||
def fexcess_precision_EQ : Joined<["-"], "fexcess-precision=">,
|
||||
Group<clang_ignored_gcc_optimization_f_Group>;
|
||||
def : Flag<["-"], "fexpensive-optimizations">, Group<clang_ignored_gcc_optimization_f_Group>;
|
||||
|
|
|
@ -5495,7 +5495,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
addExceptionArgs(Args, InputType, getToolChain(), KernelOrKext, objcRuntime,
|
||||
CmdArgs);
|
||||
|
||||
if (getToolChain().UseSjLjExceptions(Args))
|
||||
if (Args.hasArg(options::OPT_fsjlj_exceptions) ||
|
||||
getToolChain().UseSjLjExceptions(Args))
|
||||
CmdArgs.push_back("-fsjlj-exceptions");
|
||||
|
||||
// C++ "sane" operator new.
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
// RUN: %clang -target armv7-apple-ios -fexceptions -c %s -o /dev/null -### 2>&1 | FileCheck -check-prefix CHECK-IOS %s
|
||||
// RUN: %clang -target i686-windows-gnu -fexceptions -c %s -o /dev/null -### 2>&1 | FileCheck -check-prefix CHECK-MINGW-DEFAULT %s
|
||||
// RUN: %clang -target i686-windows-gnu -fexceptions -fsjlj-exceptions -c %s -o /dev/null -### 2>&1 | FileCheck -check-prefix CHECK-MINGW-SJLJ %s
|
||||
|
||||
// CHECK-IOS: -fsjlj-exceptions
|
||||
// CHECK-MINGW-DEFAULT-NOT: -fsjlj-exceptions
|
||||
// CHECK-MINGW-SJLJ: -fsjlj-exceptions
|
||||
|
Loading…
Reference in New Issue