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 | 57016dda61498294120b1a881d9e6606337b29d9 (patch) | |
tree | 5dfc64766b1250929020a9c1bba6347e84c1046b /lib/Frontend/CompilerInvocation.cpp | |
parent | 708f69bcc1be715efd1e9f46266a9c1ead184be6 (diff) |
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).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166072 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | lib/Frontend/CompilerInvocation.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 6d34425e13..5fc3f1bd18 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/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); |