summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-01-17 18:48:07 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-01-17 18:48:07 +0000
commitda6e05476d848422e9505a22921466092abcd415 (patch)
tree3c9fa4379fb7dad80391cd8afd2ec4c5d9e811ab
parent5767f0f1131564cfac89abda0d3d9135e2b7e031 (diff)
downloadbcm5719-llvm-da6e05476d848422e9505a22921466092abcd415.tar.gz
bcm5719-llvm-da6e05476d848422e9505a22921466092abcd415.zip
[libclang] Make sure Preprocessor is set in ASTUnit during indexing.
llvm-svn: 148319
-rw-r--r--clang/include/clang/Frontend/ASTUnit.h1
-rw-r--r--clang/lib/Frontend/ASTUnit.cpp2
-rw-r--r--clang/tools/libclang/Indexing.cpp1
-rw-r--r--clang/tools/libclang/IndexingContext.cpp4
-rw-r--r--clang/tools/libclang/IndexingContext.h1
5 files changed, 9 insertions, 0 deletions
diff --git a/clang/include/clang/Frontend/ASTUnit.h b/clang/include/clang/Frontend/ASTUnit.h
index 8feab307ea5..4b84e6a8d6b 100644
--- a/clang/include/clang/Frontend/ASTUnit.h
+++ b/clang/include/clang/Frontend/ASTUnit.h
@@ -457,6 +457,7 @@ public:
ASTContext &getASTContext() { return *Ctx; }
void setASTContext(ASTContext *ctx) { Ctx = ctx; }
+ void setPreprocessor(Preprocessor *pp);
bool hasSema() const { return TheSema; }
Sema &getSema() const {
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp
index 5272636fa90..e31bf5500ba 100644
--- a/clang/lib/Frontend/ASTUnit.cpp
+++ b/clang/lib/Frontend/ASTUnit.cpp
@@ -262,6 +262,8 @@ ASTUnit::~ASTUnit() {
}
}
+void ASTUnit::setPreprocessor(Preprocessor *pp) { PP = pp; }
+
/// \brief Determine the set of code-completion contexts in which this
/// declaration should be shown.
static unsigned getDeclShowContexts(NamedDecl *ND,
diff --git a/clang/tools/libclang/Indexing.cpp b/clang/tools/libclang/Indexing.cpp
index 630c55bb335..6bffc6b97aa 100644
--- a/clang/tools/libclang/Indexing.cpp
+++ b/clang/tools/libclang/Indexing.cpp
@@ -176,6 +176,7 @@ public:
IndexCtx.setASTContext(CI.getASTContext());
Preprocessor &PP = CI.getPreprocessor();
PP.addPPCallbacks(new IndexPPCallbacks(PP, IndexCtx));
+ IndexCtx.setPreprocessor(PP);
return new IndexingConsumer(IndexCtx);
}
diff --git a/clang/tools/libclang/IndexingContext.cpp b/clang/tools/libclang/IndexingContext.cpp
index befdce90459..1c58d23f54c 100644
--- a/clang/tools/libclang/IndexingContext.cpp
+++ b/clang/tools/libclang/IndexingContext.cpp
@@ -208,6 +208,10 @@ void IndexingContext::setASTContext(ASTContext &ctx) {
static_cast<ASTUnit*>(CXTU->TUData)->setASTContext(&ctx);
}
+void IndexingContext::setPreprocessor(Preprocessor &PP) {
+ static_cast<ASTUnit*>(CXTU->TUData)->setPreprocessor(&PP);
+}
+
bool IndexingContext::shouldAbort() {
if (!CB.abortQuery)
return false;
diff --git a/clang/tools/libclang/IndexingContext.h b/clang/tools/libclang/IndexingContext.h
index 26b8ecb75d0..bc33005e89d 100644
--- a/clang/tools/libclang/IndexingContext.h
+++ b/clang/tools/libclang/IndexingContext.h
@@ -319,6 +319,7 @@ public:
ASTContext &getASTContext() const { return *Ctx; }
void setASTContext(ASTContext &ctx);
+ void setPreprocessor(Preprocessor &PP);
bool suppressRefs() const {
return IndexOptions & CXIndexOpt_SuppressRedundantRefs;
OpenPOWER on IntegriCloud