Nebiroth created this revision. Nebiroth added reviewers: malaperle, ilya-biryukov.
Adds BeforeExecute method to PrecompiledPreamble to be called before Execute(). This method can be overriden. Repository: rC Clang https://reviews.llvm.org/D41365 Files: include/clang/Frontend/PrecompiledPreamble.h lib/Frontend/PrecompiledPreamble.cpp Index: lib/Frontend/PrecompiledPreamble.cpp =================================================================== --- lib/Frontend/PrecompiledPreamble.cpp +++ lib/Frontend/PrecompiledPreamble.cpp @@ -328,6 +328,7 @@ Clang->setSourceManager( new SourceManager(Diagnostics, Clang->getFileManager())); + Callbacks.BeforeExecute(*Clang); auto PreambleDepCollector = std::make_shared<DependencyCollector>(); Clang->addDependencyCollector(PreambleDepCollector); @@ -704,6 +705,7 @@ } } +void PreambleCallbacks::BeforeExecute(CompilerInstance &CI) {} void PreambleCallbacks::AfterExecute(CompilerInstance &CI) {} void PreambleCallbacks::AfterPCHEmitted(ASTWriter &Writer) {} void PreambleCallbacks::HandleTopLevelDecl(DeclGroupRef DG) {} Index: include/clang/Frontend/PrecompiledPreamble.h =================================================================== --- include/clang/Frontend/PrecompiledPreamble.h +++ include/clang/Frontend/PrecompiledPreamble.h @@ -244,6 +244,9 @@ public: virtual ~PreambleCallbacks() = default; + /// Called before FrontendAction::Execute(). Can be used to assign a SourceManager + /// from a CompilerInstance. + virtual void BeforeExecute(CompilerInstance &CI); /// Called after FrontendAction::Execute(), but before /// FrontendAction::EndSourceFile(). Can be used to transfer ownership of /// various CompilerInstance fields before they are destroyed.
Index: lib/Frontend/PrecompiledPreamble.cpp =================================================================== --- lib/Frontend/PrecompiledPreamble.cpp +++ lib/Frontend/PrecompiledPreamble.cpp @@ -328,6 +328,7 @@ Clang->setSourceManager( new SourceManager(Diagnostics, Clang->getFileManager())); + Callbacks.BeforeExecute(*Clang); auto PreambleDepCollector = std::make_shared<DependencyCollector>(); Clang->addDependencyCollector(PreambleDepCollector); @@ -704,6 +705,7 @@ } } +void PreambleCallbacks::BeforeExecute(CompilerInstance &CI) {} void PreambleCallbacks::AfterExecute(CompilerInstance &CI) {} void PreambleCallbacks::AfterPCHEmitted(ASTWriter &Writer) {} void PreambleCallbacks::HandleTopLevelDecl(DeclGroupRef DG) {} Index: include/clang/Frontend/PrecompiledPreamble.h =================================================================== --- include/clang/Frontend/PrecompiledPreamble.h +++ include/clang/Frontend/PrecompiledPreamble.h @@ -244,6 +244,9 @@ public: virtual ~PreambleCallbacks() = default; + /// Called before FrontendAction::Execute(). Can be used to assign a SourceManager + /// from a CompilerInstance. + virtual void BeforeExecute(CompilerInstance &CI); /// Called after FrontendAction::Execute(), but before /// FrontendAction::EndSourceFile(). Can be used to transfer ownership of /// various CompilerInstance fields before they are destroyed.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits