diff options
author | Charles Davis <cdavis@mines.edu> | 2010-06-11 01:06:47 +0000 |
---|---|---|
committer | Charles Davis <cdavis@mines.edu> | 2010-06-11 01:06:47 +0000 |
commit | 95a546ee4dbdc997e9898c9839f3851f46a78b5c (patch) | |
tree | 1831268fb0626735bb78b6ece5649b3549d444b8 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 437416c06bc1520baff737c56784480ed964d687 (diff) | |
download | bcm5719-llvm-95a546ee4dbdc997e9898c9839f3851f46a78b5c.tar.gz bcm5719-llvm-95a546ee4dbdc997e9898c9839f3851f46a78b5c.zip |
Add an option to specify the target C++ ABI to the frontend. Use it to
select either the default Itanium ABI or the new, experimental Microsoft ABI.
llvm-svn: 105804
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 4d7f839bdcc..9bc8b76de89 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -680,6 +680,8 @@ static void TargetOptsToArgs(const TargetOptions &Opts, Res.push_back("-target-abi"); Res.push_back(Opts.ABI); } + Res.push_back("-cxx-abi"); + Res.push_back(Opts.CXXABI); for (unsigned i = 0, e = Opts.Features.size(); i != e; ++i) { Res.push_back("-target-feature"); Res.push_back(Opts.Features[i]); @@ -1367,6 +1369,7 @@ static void ParsePreprocessorOutputArgs(PreprocessorOutputOptions &Opts, static void ParseTargetArgs(TargetOptions &Opts, ArgList &Args) { using namespace cc1options; Opts.ABI = Args.getLastArgValue(OPT_target_abi); + Opts.CXXABI = Args.getLastArgValue(OPT_cxx_abi); Opts.CPU = Args.getLastArgValue(OPT_target_cpu); Opts.Triple = Args.getLastArgValue(OPT_triple); Opts.Features = Args.getAllArgValues(OPT_target_feature); @@ -1374,6 +1377,10 @@ static void ParseTargetArgs(TargetOptions &Opts, ArgList &Args) { // Use the host triple if unspecified. if (Opts.Triple.empty()) Opts.Triple = llvm::sys::getHostTriple(); + + // Use the Itanium C++ ABI if unspecified. + if (Opts.CXXABI.empty()) + Opts.CXXABI = "itanium"; } // |