diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-10-16 23:40:58 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-10-16 23:40:58 +0000 |
commit | cb177f15e78870aff3c6aa6f6c1ec89cbc3ad2fb (patch) | |
tree | 7d3fdd251b5db1ae3ef4eccb7b9248134d9ac1c2 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 1ee635278813d0ca976d2f17688c92f8b1470851 (diff) | |
download | bcm5719-llvm-cb177f15e78870aff3c6aa6f6c1ec89cbc3ad2fb.tar.gz bcm5719-llvm-cb177f15e78870aff3c6aa6f6c1ec89cbc3ad2fb.zip |
Serialize TargetOptions into an AST file, and make sure that we keep
target options around so they can be accessed at any point (rather
than keeping them transient).
llvm-svn: 166072
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 6d34425e130..5fc3f1bd187 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -35,11 +35,12 @@ using namespace clang; //===----------------------------------------------------------------------===// CompilerInvocationBase::CompilerInvocationBase() - : LangOpts(new LangOptions()) {} + : LangOpts(new LangOptions()), TargetOpts(new TargetOptions()) {} CompilerInvocationBase::CompilerInvocationBase(const CompilerInvocationBase &X) : RefCountedBase<CompilerInvocation>(), - LangOpts(new LangOptions(*X.getLangOpts())) {} + LangOpts(new LangOptions(*X.getLangOpts())), + TargetOpts(new TargetOptions(X.getTargetOpts())) {} //===----------------------------------------------------------------------===// // Utility functions. @@ -927,8 +928,8 @@ static void TargetOptsToArgs(const TargetOptions &Opts, Res.push_back("-target-linker-version", Opts.LinkerVersion); if (!Opts.CXXABI.empty()) Res.push_back("-cxx-abi", Opts.CXXABI); - for (unsigned i = 0, e = Opts.Features.size(); i != e; ++i) - Res.push_back("-target-feature", Opts.Features[i]); + for (unsigned i = 0, e = Opts.FeaturesAsWritten.size(); i != e; ++i) + Res.push_back("-target-feature", Opts.FeaturesAsWritten[i]); } void CompilerInvocation::toArgs(std::vector<std::string> &Res) const { @@ -2285,7 +2286,7 @@ static void ParseTargetArgs(TargetOptions &Opts, ArgList &Args) { Opts.ABI = Args.getLastArgValue(OPT_target_abi); Opts.CXXABI = Args.getLastArgValue(OPT_cxx_abi); Opts.CPU = Args.getLastArgValue(OPT_target_cpu); - Opts.Features = Args.getAllArgValues(OPT_target_feature); + Opts.FeaturesAsWritten = Args.getAllArgValues(OPT_target_feature); Opts.LinkerVersion = Args.getLastArgValue(OPT_target_linker_version); Opts.Triple = llvm::Triple::normalize(Args.getLastArgValue(OPT_triple)); @@ -2431,7 +2432,8 @@ std::string CompilerInvocation::getModuleHash() const { #include "clang/Basic/LangOptions.def" // Extend the signature with the target triple - llvm::Triple T(TargetOpts.Triple); + // FIXME: Add target options. + llvm::Triple T(TargetOpts->Triple); Signature.add((unsigned)T.getArch(), 5); Signature.add((unsigned)T.getVendor(), 4); Signature.add((unsigned)T.getOS(), 5); |