diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-11-26 02:14:07 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-11-26 02:14:07 +0000 |
commit | 0ff679f5ddd24a4acbeffc9757a9b2a6e4673c14 (patch) | |
tree | a8d47fda2e749f719f3ac43b8fb398d81c3ca6a8 /lib/Frontend/CompilerInvocation.cpp | |
parent | d8c780612f33efb2fdc53234129f1df195aacbb1 (diff) |
Add clang -cc1 parsing for preprocessor options.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89917 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | lib/Frontend/CompilerInvocation.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 092c0e23ed..be9bab16be 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -470,28 +470,34 @@ static void LangOptsToArgs(const LangOptions &Opts, static void PreprocessorOptsToArgs(const PreprocessorOptions &Opts, std::vector<std::string> &Res) { for (unsigned i = 0, e = Opts.Macros.size(); i != e; ++i) - Res.push_back((Opts.Macros[i].second ? "-U" : "-D") + Opts.Macros[i].first); + Res.push_back(std::string(Opts.Macros[i].second ? "-U" : "-D") + + Opts.Macros[i].first); for (unsigned i = 0, e = Opts.Includes.size(); i != e; ++i) { + // FIXME: We need to avoid reincluding the implicit PCH and PTH includes. Res.push_back("-include"); Res.push_back(Opts.Includes[i]); } for (unsigned i = 0, e = Opts.MacroIncludes.size(); i != e; ++i) { Res.push_back("-imacros"); - Res.push_back(Opts.Includes[i]); + Res.push_back(Opts.MacroIncludes[i]); } if (!Opts.UsePredefines) Res.push_back("-undef"); if (!Opts.ImplicitPCHInclude.empty()) { - Res.push_back("-implicit-pch-include"); + Res.push_back("-include-pch"); Res.push_back(Opts.ImplicitPCHInclude); } if (!Opts.ImplicitPTHInclude.empty()) { - Res.push_back("-implicit-pth-include"); + Res.push_back("-include-pth"); Res.push_back(Opts.ImplicitPTHInclude); } if (!Opts.TokenCache.empty()) { - Res.push_back("-token-cache"); - Res.push_back(Opts.TokenCache); + if (Opts.ImplicitPTHInclude.empty()) { + Res.push_back("-token-cache"); + Res.push_back(Opts.TokenCache); + } else + assert(Opts.ImplicitPTHInclude == Opts.TokenCache && + "Unsupported option combination!"); } } |