summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2017-12-20 16:48:56 +0000
committerIlya Biryukov <ibiryukov@google.com>2017-12-20 16:48:56 +0000
commit1f8647d1c1c651d041c1693bc48861968e6e2b1b (patch)
treeb78893eb569ff53fd0e602fc634a7ba84b3416b8
parent7d661bb24882ac7ef724860eae9dbaa9bcd4fbd6 (diff)
downloadbcm5719-llvm-1f8647d1c1c651d041c1693bc48861968e6e2b1b.tar.gz
bcm5719-llvm-1f8647d1c1c651d041c1693bc48861968e6e2b1b.zip
[clang] Add BeforeExecute method to PrecompiledPreamble
Summary: Adds BeforeExecute method to PrecompiledPreamble to be called before Execute(). This method can be overriden. Patch by William Enright. Reviewers: malaperle, ilya-biryukov Reviewed By: ilya-biryukov Subscribers: arphaman, cfe-commits, ilya-biryukov Differential Revision: https://reviews.llvm.org/D41365 llvm-svn: 321189
-rw-r--r--clang/include/clang/Frontend/PrecompiledPreamble.h4
-rw-r--r--clang/lib/Frontend/PrecompiledPreamble.cpp2
2 files changed, 6 insertions, 0 deletions
diff --git a/clang/include/clang/Frontend/PrecompiledPreamble.h b/clang/include/clang/Frontend/PrecompiledPreamble.h
index 64342b1dffa..9af50f91836 100644
--- a/clang/include/clang/Frontend/PrecompiledPreamble.h
+++ b/clang/include/clang/Frontend/PrecompiledPreamble.h
@@ -244,6 +244,10 @@ class PreambleCallbacks {
public:
virtual ~PreambleCallbacks() = default;
+ /// Called before FrontendAction::BeginSourceFile.
+ /// Can be used to store references to various CompilerInstance fields
+ /// (e.g. SourceManager) that may be interesting to the consumers of other callbacks.
+ 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.
diff --git a/clang/lib/Frontend/PrecompiledPreamble.cpp b/clang/lib/Frontend/PrecompiledPreamble.cpp
index f6964d02b23..f933ba6cec0 100644
--- a/clang/lib/Frontend/PrecompiledPreamble.cpp
+++ b/clang/lib/Frontend/PrecompiledPreamble.cpp
@@ -333,6 +333,7 @@ llvm::ErrorOr<PrecompiledPreamble> PrecompiledPreamble::Build(
std::unique_ptr<PrecompilePreambleAction> Act;
Act.reset(new PrecompilePreambleAction(
StoreInMemory ? &Storage.asMemory().Data : nullptr, Callbacks));
+ Callbacks.BeforeExecute(*Clang);
if (!Act->BeginSourceFile(*Clang.get(), Clang->getFrontendOpts().Inputs[0]))
return BuildPreambleError::BeginSourceFileFailed;
@@ -694,6 +695,7 @@ void PrecompiledPreamble::setupPreambleStorage(
}
}
+void PreambleCallbacks::BeforeExecute(CompilerInstance &CI) {}
void PreambleCallbacks::AfterExecute(CompilerInstance &CI) {}
void PreambleCallbacks::AfterPCHEmitted(ASTWriter &Writer) {}
void PreambleCallbacks::HandleTopLevelDecl(DeclGroupRef DG) {}
OpenPOWER on IntegriCloud