diff options
| author | Mike Stump <mrs@apple.com> | 2009-07-31 23:15:31 +0000 | 
|---|---|---|
| committer | Mike Stump <mrs@apple.com> | 2009-07-31 23:15:31 +0000 | 
| commit | 183c3d2f5978422e8b632c5478331e7b39fe1efe (patch) | |
| tree | a220c9d05cc9dfaf306decc849ef350f31bc6e2d /clang/lib/Driver | |
| parent | ce24e0043e7f4d140c51bb828065a4354af67fa5 (diff) | |
| download | bcm5719-llvm-183c3d2f5978422e8b632c5478331e7b39fe1efe.tar.gz bcm5719-llvm-183c3d2f5978422e8b632c5478331e7b39fe1efe.zip | |
Add beginnigs of rtti generation, wire up more of -fno-exceptions.
llvm-svn: 77751
Diffstat (limited to 'clang/lib/Driver')
| -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? | 

