aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-10-01 20:30:46 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-10-01 20:30:46 +0000
commit85caf03ee49c4de87ee9624a9b725ef5d20ee624 (patch)
tree6fc43143132fdf54c7a6c5208e48e422d9efb825 /lib/Driver/Tools.cpp
parentbb206fdd9d4465fee4336e6a12d7e936add17389 (diff)
Set __EXCEPTIONS by checking on darwin's triple.
Patch by Rafael Espindola. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83209 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r--lib/Driver/Tools.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index ac7df866d7..5fa55f22ac 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -472,7 +472,8 @@ void Clang::AddX86TargetArgs(const ArgList &Args,
}
}
-static bool needsExceptions(const ArgList &Args, types::ID InputType) {
+static bool needsExceptions(const ArgList &Args, types::ID InputType,
+ const llvm::Triple &Triple) {
if (Arg *A = Args.getLastArg(options::OPT_fexceptions,
options::OPT_fno_exceptions)) {
if (A->getOption().matches(options::OPT_fexceptions))
@@ -486,12 +487,16 @@ static bool needsExceptions(const ArgList &Args, types::ID InputType) {
case types::TY_ObjCXX: case types::TY_ObjCXXHeader:
case types::TY_PP_ObjCXX: case types::TY_PP_ObjCXXHeader:
return true;
+
case types::TY_ObjC: case types::TY_ObjCHeader:
case types::TY_PP_ObjC: case types::TY_PP_ObjCHeader:
if (Args.hasArg(options::OPT_fobjc_nonfragile_abi))
return true;
- else
+ if (Triple.getOS() != llvm::Triple::Darwin)
return false;
+ return (Triple.getDarwinMajorNumber() >= 9 &&
+ Triple.getArch() == llvm::Triple::x86_64);
+
default:
return false;
}
@@ -833,7 +838,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-fblocks=0");
}
- if (needsExceptions(Args, InputType))
+ if (needsExceptions(Args, InputType, getToolChain().getTriple()))
CmdArgs.push_back("-fexceptions");
else
CmdArgs.push_back("-fexceptions=0");