Move TokenCache option to PreprocessorOptions.
llvm-svn: 86940
This commit is contained in:
parent
1a54e3fbb9
commit
2940303363
|
@ -37,6 +37,9 @@ class PreprocessorOptions {
|
|||
/// empty.
|
||||
std::string ImplicitPTHInclude;
|
||||
|
||||
/// If given, a PTH cache file to use for speeding up header parsing.
|
||||
std::string TokenCache;
|
||||
|
||||
public:
|
||||
PreprocessorOptions() : UsePredefines(true) {}
|
||||
|
||||
|
@ -63,6 +66,13 @@ public:
|
|||
ImplicitPTHInclude = Value;
|
||||
}
|
||||
|
||||
const std::string &getTokenCache() const {
|
||||
return TokenCache;
|
||||
}
|
||||
void setTokenCache(llvm::StringRef Value) {
|
||||
TokenCache = Value;
|
||||
}
|
||||
|
||||
void addMacroDef(llvm::StringRef Name) {
|
||||
Macros.push_back(std::make_pair(Name, false));
|
||||
}
|
||||
|
|
|
@ -491,6 +491,10 @@ static llvm::cl::opt<std::string>
|
|||
ImplicitIncludePTH("include-pth", llvm::cl::value_desc("file"),
|
||||
llvm::cl::desc("Include file before parsing"));
|
||||
|
||||
static llvm::cl::opt<std::string>
|
||||
TokenCache("token-cache", llvm::cl::value_desc("path"),
|
||||
llvm::cl::desc("Use specified token cache file"));
|
||||
|
||||
static llvm::cl::list<std::string>
|
||||
U_macros("U", llvm::cl::value_desc("macro"), llvm::cl::Prefix,
|
||||
llvm::cl::desc("Undefine the specified macro"));
|
||||
|
@ -776,6 +780,19 @@ void clang::InitializePreprocessorOptions(PreprocessorOptions &Opts) {
|
|||
Opts.setImplicitPCHInclude(ImplicitIncludePCH);
|
||||
Opts.setImplicitPTHInclude(ImplicitIncludePTH);
|
||||
|
||||
// Select the token cache file, we don't support more than one currently so we
|
||||
// can't have both an implicit-pth and a token cache file.
|
||||
if (TokenCache.getPosition() && ImplicitIncludePTH.getPosition()) {
|
||||
// FIXME: Don't fail like this.
|
||||
fprintf(stderr, "error: cannot use both -token-cache and -include-pth "
|
||||
"options\n");
|
||||
exit(1);
|
||||
}
|
||||
if (TokenCache.getPosition())
|
||||
Opts.setTokenCache(TokenCache);
|
||||
else
|
||||
Opts.setTokenCache(ImplicitIncludePTH);
|
||||
|
||||
// Use predefines?
|
||||
Opts.setUsePredefines(!UndefMacros);
|
||||
|
||||
|
|
|
@ -254,10 +254,6 @@ TimeReport("ftime-report",
|
|||
llvm::cl::desc("Print the amount of time each "
|
||||
"phase of compilation takes"));
|
||||
|
||||
static llvm::cl::opt<std::string>
|
||||
TokenCache("token-cache", llvm::cl::value_desc("path"),
|
||||
llvm::cl::desc("Use specified token cache file"));
|
||||
|
||||
static llvm::cl::opt<bool>
|
||||
VerifyDiagnostics("verify",
|
||||
llvm::cl::desc("Verify emitted diagnostics and warnings"));
|
||||
|
@ -381,20 +377,12 @@ CreatePreprocessor(Diagnostic &Diags, const LangOptions &LangInfo,
|
|||
const DependencyOutputOptions &DepOpts,
|
||||
TargetInfo &Target, SourceManager &SourceMgr,
|
||||
FileManager &FileMgr) {
|
||||
// Create a PTH manager if we are using some form of a token cache.
|
||||
PTHManager *PTHMgr = 0;
|
||||
if (!TokenCache.empty() && !PPOpts.getImplicitPTHInclude().empty()) {
|
||||
fprintf(stderr, "error: cannot use both -token-cache and -include-pth "
|
||||
"options\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Use PTH?
|
||||
if (!TokenCache.empty() || !PPOpts.getImplicitPTHInclude().empty()) {
|
||||
const std::string& x = TokenCache.empty() ?
|
||||
PPOpts.getImplicitPTHInclude() : TokenCache;
|
||||
PTHMgr = PTHManager::Create(x, Diags);
|
||||
}
|
||||
if (!PPOpts.getTokenCache().empty())
|
||||
PTHMgr = PTHManager::Create(PPOpts.getTokenCache(), Diags);
|
||||
|
||||
// FIXME: Don't fail like this.
|
||||
if (Diags.hasErrorOccurred())
|
||||
exit(1);
|
||||
|
||||
|
|
Loading…
Reference in New Issue