aboutsummaryrefslogtreecommitdiff
path: root/Driver/AnalysisConsumer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Driver/AnalysisConsumer.cpp')
-rw-r--r--Driver/AnalysisConsumer.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/Driver/AnalysisConsumer.cpp b/Driver/AnalysisConsumer.cpp
index 5f338c8af5..f01a755988 100644
--- a/Driver/AnalysisConsumer.cpp
+++ b/Driver/AnalysisConsumer.cpp
@@ -112,8 +112,11 @@ namespace {
class VISIBILITY_HIDDEN AnalysisManager : public BugReporterData {
- Decl* D;
- Stmt* Body;
+ Decl* D; Stmt* Body;
+ TranslationUnit* TU;
+
+ enum AnalysisScope { ScopeTU, ScopeDecl } AScope;
+
AnalysisConsumer& C;
bool DisplayedFunction;
@@ -123,11 +126,25 @@ namespace {
public:
AnalysisManager(AnalysisConsumer& c, Decl* d, Stmt* b)
- : D(d), Body(b), C(c), DisplayedFunction(false) {}
+ : D(d), Body(b), TU(0), AScope(ScopeDecl), C(c), DisplayedFunction(false) {}
+
+ AnalysisManager(AnalysisConsumer& c, TranslationUnit* tu)
+ : D(0), Body(0), TU(tu), AScope(ScopeTU), C(c), DisplayedFunction(false) {}
+ Decl* getCodeDecl() const {
+ assert (AScope == ScopeDecl);
+ return D;
+ }
+
+ Stmt* getBody() const {
+ assert (AScope == ScopeDecl);
+ return Body;
+ }
- Decl* getCodeDecl() const { return D; }
- Stmt* getBody() const { return Body; }
+ TranslationUnit* getTranslationUnit() const {
+ assert (AScope == ScopeTU);
+ return TU;
+ }
GRStateManager::StoreManagerCreator getStoreManagerCreator() {
switch (C.SM) {