forked from OSchip/llvm-project
Teach the preprocessor to hold onto the preprocessor options.
llvm-svn: 166599
This commit is contained in:
parent
fb9c6b760b
commit
1452ff155b
|
@ -55,6 +55,7 @@ class CodeCompletionHandler;
|
|||
class DirectoryLookup;
|
||||
class PreprocessingRecord;
|
||||
class ModuleLoader;
|
||||
class PreprocessorOptions;
|
||||
|
||||
/// \brief Stores token information for comparing actual tokens with
|
||||
/// predefined values. Only handles simple tokens and identifiers.
|
||||
|
@ -83,6 +84,7 @@ public:
|
|||
/// like the \#include stack, token expansion, etc.
|
||||
///
|
||||
class Preprocessor : public RefCountedBase<Preprocessor> {
|
||||
llvm::IntrusiveRefCntPtr<PreprocessorOptions> PPOpts;
|
||||
DiagnosticsEngine *Diags;
|
||||
LangOptions &LangOpts;
|
||||
const TargetInfo *Target;
|
||||
|
@ -394,7 +396,8 @@ private: // Cached tokens state.
|
|||
MacroInfoChain *MICache;
|
||||
|
||||
public:
|
||||
Preprocessor(DiagnosticsEngine &diags, LangOptions &opts,
|
||||
Preprocessor(llvm::IntrusiveRefCntPtr<PreprocessorOptions> PPOpts,
|
||||
DiagnosticsEngine &diags, LangOptions &opts,
|
||||
const TargetInfo *target,
|
||||
SourceManager &SM, HeaderSearch &Headers,
|
||||
ModuleLoader &TheModuleLoader,
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "clang/Serialization/ASTWriter.h"
|
||||
#include "clang/Lex/HeaderSearch.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Lex/PreprocessorOptions.h"
|
||||
#include "clang/Basic/TargetOptions.h"
|
||||
#include "clang/Basic/TargetInfo.h"
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
|
@ -772,7 +773,8 @@ ASTUnit *ASTUnit::LoadFromASTFile(const std::string &Filename,
|
|||
|
||||
OwningPtr<ASTReader> Reader;
|
||||
|
||||
AST->PP = new Preprocessor(AST->getDiagnostics(), AST->ASTFileLangOpts,
|
||||
AST->PP = new Preprocessor(new PreprocessorOptions(),
|
||||
AST->getDiagnostics(), AST->ASTFileLangOpts,
|
||||
/*Target=*/0, AST->getSourceManager(), HeaderInfo,
|
||||
*AST,
|
||||
/*IILookup=*/0,
|
||||
|
|
|
@ -247,7 +247,8 @@ void CompilerInstance::createPreprocessor() {
|
|||
getDiagnostics(),
|
||||
getLangOpts(),
|
||||
&getTarget());
|
||||
PP = new Preprocessor(getDiagnostics(), getLangOpts(), &getTarget(),
|
||||
PP = new Preprocessor(&getPreprocessorOpts(),
|
||||
getDiagnostics(), getLangOpts(), &getTarget(),
|
||||
getSourceManager(), *HeaderInfo, *this, PTHMgr,
|
||||
/*OwnsHeaderSearch=*/true);
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Lex/PreprocessorOptions.h"
|
||||
#include "MacroArgs.h"
|
||||
#include "clang/Lex/ExternalPreprocessorSource.h"
|
||||
#include "clang/Lex/HeaderSearch.h"
|
||||
|
@ -51,14 +52,16 @@ ExternalPreprocessorSource::~ExternalPreprocessorSource() { }
|
|||
|
||||
PPMutationListener::~PPMutationListener() { }
|
||||
|
||||
Preprocessor::Preprocessor(DiagnosticsEngine &diags, LangOptions &opts,
|
||||
Preprocessor::Preprocessor(llvm::IntrusiveRefCntPtr<PreprocessorOptions> PPOpts,
|
||||
DiagnosticsEngine &diags, LangOptions &opts,
|
||||
const TargetInfo *target, SourceManager &SM,
|
||||
HeaderSearch &Headers, ModuleLoader &TheModuleLoader,
|
||||
IdentifierInfoLookup* IILookup,
|
||||
bool OwnsHeaders,
|
||||
bool DelayInitialization,
|
||||
bool IncrProcessing)
|
||||
: Diags(&diags), LangOpts(opts), Target(target),FileMgr(Headers.getFileMgr()),
|
||||
: PPOpts(PPOpts), Diags(&diags), LangOpts(opts), Target(target),
|
||||
FileMgr(Headers.getFileMgr()),
|
||||
SourceMgr(SM), HeaderInfo(Headers), TheModuleLoader(TheModuleLoader),
|
||||
ExternalSource(0), Identifiers(opts, IILookup),
|
||||
IncrementalProcessing(IncrProcessing), CodeComplete(0),
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "clang/Lex/HeaderSearch.h"
|
||||
#include "clang/Lex/HeaderSearchOptions.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Lex/PreprocessorOptions.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/Config/config.h"
|
||||
|
||||
|
@ -69,8 +70,7 @@ TEST_F(SourceManagerTest, isBeforeInTranslationUnit) {
|
|||
VoidModuleLoader ModLoader;
|
||||
HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts,
|
||||
&*Target);
|
||||
Preprocessor PP(Diags, LangOpts,
|
||||
Target.getPtr(),
|
||||
Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
|
||||
SourceMgr, HeaderInfo, ModLoader,
|
||||
/*IILookup =*/ 0,
|
||||
/*OwnsHeaderSearch =*/false,
|
||||
|
@ -185,8 +185,7 @@ TEST_F(SourceManagerTest, getMacroArgExpandedLocation) {
|
|||
VoidModuleLoader ModLoader;
|
||||
HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts,
|
||||
&*Target);
|
||||
Preprocessor PP(Diags, LangOpts,
|
||||
Target.getPtr(),
|
||||
Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
|
||||
SourceMgr, HeaderInfo, ModLoader,
|
||||
/*IILookup =*/ 0,
|
||||
/*OwnsHeaderSearch =*/false,
|
||||
|
@ -283,8 +282,7 @@ TEST_F(SourceManagerTest, isBeforeInTranslationUnitWithMacroInInclude) {
|
|||
VoidModuleLoader ModLoader;
|
||||
HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts,
|
||||
&*Target);
|
||||
Preprocessor PP(Diags, LangOpts,
|
||||
Target.getPtr(),
|
||||
Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
|
||||
SourceMgr, HeaderInfo, ModLoader,
|
||||
/*IILookup =*/ 0,
|
||||
/*OwnsHeaderSearch =*/false,
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "clang/Lex/HeaderSearch.h"
|
||||
#include "clang/Lex/HeaderSearchOptions.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Lex/PreprocessorOptions.h"
|
||||
#include "llvm/Config/config.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
@ -75,8 +76,7 @@ TEST_F(LexerTest, LexAPI) {
|
|||
VoidModuleLoader ModLoader;
|
||||
HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts,
|
||||
Target.getPtr());
|
||||
Preprocessor PP(Diags, LangOpts,
|
||||
Target.getPtr(),
|
||||
Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
|
||||
SourceMgr, HeaderInfo, ModLoader,
|
||||
/*IILookup =*/ 0,
|
||||
/*OwnsHeaderSearch =*/false,
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "clang/Lex/HeaderSearch.h"
|
||||
#include "clang/Lex/HeaderSearchOptions.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Lex/PreprocessorOptions.h"
|
||||
#include "clang/Lex/PreprocessingRecord.h"
|
||||
#include "llvm/Config/config.h"
|
||||
|
||||
|
@ -86,8 +87,7 @@ TEST_F(PreprocessingRecordTest, PPRecAPI) {
|
|||
VoidModuleLoader ModLoader;
|
||||
HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts,
|
||||
Target.getPtr());
|
||||
Preprocessor PP(Diags, LangOpts,
|
||||
Target.getPtr(),
|
||||
Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts,Target.getPtr(),
|
||||
SourceMgr, HeaderInfo, ModLoader,
|
||||
/*IILookup =*/ 0,
|
||||
/*OwnsHeaderSearch =*/false,
|
||||
|
|
Loading…
Reference in New Issue