diff options
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 16 | 
1 files changed, 15 insertions, 1 deletions
| diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index e3612c71bda..8158b72ab72 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -480,7 +480,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,    // Forward -f options which we can pass directly.    Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls); -  Args.AddLastArg(CmdArgs, options::OPT_fexceptions);    Args.AddLastArg(CmdArgs, options::OPT_ffreestanding);    Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);    Args.AddLastArg(CmdArgs, options::OPT_fgnu_runtime); @@ -530,6 +529,20 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,        CmdArgs.push_back("-fblocks=0");    } +  // -fexceptions default varies depending on platform and language; only +  // pass if specified. + if (Arg *A = Args.getLastArg(options::OPT_fexceptions, +                               options::OPT_fno_exceptions)) { +    if (A->getOption().matches(options::OPT_fexceptions)) +      CmdArgs.push_back("-fexceptions"); +    else +      CmdArgs.push_back("-fexceptions=0"); +  } + +  // -frtti is default, only pass non-default. +  if (!Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti)) +    CmdArgs.push_back("-frtti=0"); +    // -fsigned-char/-funsigned-char default varies depending on platform; only    // pass if specified.    if (Arg *A = Args.getLastArg(options::OPT_fsigned_char, @@ -1669,6 +1682,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,          // Derived from darwin_iphoneos_libgcc spec.          CmdArgs.push_back("-lgcc_s.10.5");        } else if (Args.hasArg(options::OPT_shared_libgcc) || +                 // FIXME: -fexceptions -fno-exceptions means no exceptions                   Args.hasArg(options::OPT_fexceptions) ||                   Args.hasArg(options::OPT_fgnu_runtime)) {          // FIXME: This is probably broken on 10.3? | 

