diff options
Diffstat (limited to 'clang/lib/Driver/ToolChains/Clang.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Clang.cpp | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1c90c6e9225..d96664cf0be 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4166,33 +4166,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, addExceptionArgs(Args, InputType, getToolChain(), KernelOrKext, Runtime, CmdArgs); - // Handle exception personalities - Arg *A = Args.getLastArg(options::OPT_fsjlj_exceptions, - options::OPT_fseh_exceptions, - options::OPT_fdwarf_exceptions); - if (A) { - const Option &Opt = A->getOption(); - if (Opt.matches(options::OPT_fsjlj_exceptions)) - CmdArgs.push_back("-fsjlj-exceptions"); - if (Opt.matches(options::OPT_fseh_exceptions)) - CmdArgs.push_back("-fseh-exceptions"); - if (Opt.matches(options::OPT_fdwarf_exceptions)) - CmdArgs.push_back("-fdwarf-exceptions"); - } else { - switch(getToolChain().GetExceptionModel(Args)) { - default: - break; - case llvm::ExceptionHandling::DwarfCFI: - CmdArgs.push_back("-fdwarf-exceptions"); - break; - case llvm::ExceptionHandling::SjLj: - CmdArgs.push_back("-fsjlj-exceptions"); - break; - case llvm::ExceptionHandling::WinEH: - CmdArgs.push_back("-fseh-exceptions"); - break; - } - } + if (Args.hasArg(options::OPT_fsjlj_exceptions) || + getToolChain().UseSjLjExceptions(Args)) + CmdArgs.push_back("-fsjlj-exceptions"); // C++ "sane" operator new. if (!Args.hasFlag(options::OPT_fassume_sane_operator_new, |