diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-03-17 23:28:31 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-03-17 23:28:31 +0000 |
commit | d47ea693706f7b0ffa68e879b73a71609a337786 (patch) | |
tree | d5189f0568e1d31663bbbe60c6488163d8500814 /lib/Driver/Tools.cpp | |
parent | 617508fb9e33e756f51246df977251e8c8699267 (diff) |
Driver/Obj-C: Be compatible with GCC behavior in that -fno-exceptions *does not*
disable Obj-C exceptions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127836 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index cf6a853952..45fdd8be2e 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -843,25 +843,16 @@ static void addExceptionArgs(const ArgList &Args, types::ID InputType, if (ExceptionsEnabled && DidHaveExplicitExceptionFlag) ShouldUseExceptionTables = true; - if (types::isObjC(InputType)) { - bool ObjCExceptionsEnabled = ExceptionsEnabled; - - if (Arg *A = Args.getLastArg(options::OPT_fobjc_exceptions, - options::OPT_fno_objc_exceptions, - options::OPT_fexceptions, - options::OPT_fno_exceptions)) { - if (A->getOption().matches(options::OPT_fobjc_exceptions)) - ObjCExceptionsEnabled = true; - else if (A->getOption().matches(options::OPT_fno_objc_exceptions)) - ObjCExceptionsEnabled = false; - } - - if (ObjCExceptionsEnabled) { - CmdArgs.push_back("-fobjc-exceptions"); - - ShouldUseExceptionTables |= - shouldUseExceptionTablesForObjCExceptions(Args, Triple); - } + // Obj-C exceptions are enabled by default, regardless of -fexceptions. This + // is not necessarily sensible, but follows GCC. + if (types::isObjC(InputType) && + Args.hasFlag(options::OPT_fobjc_exceptions, + options::OPT_fno_objc_exceptions, + true)) { + CmdArgs.push_back("-fobjc-exceptions"); + + ShouldUseExceptionTables |= + shouldUseExceptionTablesForObjCExceptions(Args, Triple); } if (types::isCXX(InputType)) { |