diff options
author | Daniel Dunbar <daniel@zuster.org> | 2012-03-05 21:42:49 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2012-03-05 21:42:49 +0000 |
commit | 02892a65b18875a04c7ed5eadb3a13be801ab477 (patch) | |
tree | 2039a115887a751e12e83cf7229af194c4017e21 | |
parent | 7034fb6c7be710883a970f82cb2da97bf1cf5cda (diff) |
AST/stats: Don't effectively use an out-of-line function to return a static
bool. Ugh.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152062 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/AST/DeclBase.h | 9 | ||||
-rw-r--r-- | include/clang/AST/Stmt.h | 10 | ||||
-rw-r--r-- | lib/AST/DeclBase.cpp | 8 | ||||
-rw-r--r-- | lib/AST/Stmt.cpp | 8 | ||||
-rw-r--r-- | lib/Parse/ParseAST.cpp | 4 |
5 files changed, 21 insertions, 18 deletions
diff --git a/include/clang/AST/DeclBase.h b/include/clang/AST/DeclBase.h index 72f82aa9e3..4ed4b1aea9 100644 --- a/include/clang/AST/DeclBase.h +++ b/include/clang/AST/DeclBase.h @@ -260,6 +260,9 @@ private: /// are regarded as "referenced" but not "used". unsigned Referenced : 1; + /// \brief Whether statistic collection is enabled. + static bool StatisticsEnabled; + protected: /// Access - Used by C++ decls for the access specifier. // NOTE: VC++ treats enums as signed, avoid using the AccessSpecifier enum @@ -304,7 +307,7 @@ protected: IdentifierNamespace(getIdentifierNamespaceForKind(DK)), HasCachedLinkage(0) { - if (Decl::CollectingStats()) add(DK); + if (StatisticsEnabled) add(DK); } Decl(Kind DK, EmptyShell Empty) @@ -314,7 +317,7 @@ protected: IdentifierNamespace(getIdentifierNamespaceForKind(DK)), HasCachedLinkage(0) { - if (Decl::CollectingStats()) add(DK); + if (StatisticsEnabled) add(DK); } virtual ~Decl(); @@ -761,7 +764,7 @@ public: // global temp stats (until we have a per-module visitor) static void add(Kind k); - static bool CollectingStats(bool Enable = false); + static void EnableStatistics(); static void PrintStats(); /// isTemplateParameter - Determines whether this declaration is a diff --git a/include/clang/AST/Stmt.h b/include/clang/AST/Stmt.h index c81798ccd2..4c92520a76 100644 --- a/include/clang/AST/Stmt.h +++ b/include/clang/AST/Stmt.h @@ -319,17 +319,21 @@ public: /// de-serialization). struct EmptyShell { }; +private: + /// \brief Whether statistic collection is enabled. + static bool StatisticsEnabled; + protected: /// \brief Construct an empty statement. explicit Stmt(StmtClass SC, EmptyShell) { StmtBits.sClass = SC; - if (Stmt::CollectingStats()) Stmt::addStmtClass(SC); + if (StatisticsEnabled) Stmt::addStmtClass(SC); } public: Stmt(StmtClass SC) { StmtBits.sClass = SC; - if (Stmt::CollectingStats()) Stmt::addStmtClass(SC); + if (StatisticsEnabled) Stmt::addStmtClass(SC); } StmtClass getStmtClass() const { @@ -347,7 +351,7 @@ public: // global temp stats (until we have a per-module visitor) static void addStmtClass(const StmtClass s); - static bool CollectingStats(bool Enable = false); + static void EnableStatistics(); static void PrintStats(); /// dump - This does a local dump of the specified AST fragment. It dumps the diff --git a/lib/AST/DeclBase.cpp b/lib/AST/DeclBase.cpp index dbb0b6bfa4..10e612514f 100644 --- a/lib/AST/DeclBase.cpp +++ b/lib/AST/DeclBase.cpp @@ -39,8 +39,6 @@ using namespace clang; #define ABSTRACT_DECL(DECL) #include "clang/AST/DeclNodes.inc" -static bool StatSwitch = false; - void *Decl::AllocateDeserializedDecl(const ASTContext &Context, unsigned ID, unsigned Size) { @@ -88,9 +86,9 @@ const char *DeclContext::getDeclKindName() const { } } -bool Decl::CollectingStats(bool Enable) { - if (Enable) StatSwitch = true; - return StatSwitch; +bool Decl::StatisticsEnabled = false; +void Decl::EnableStatistics() { + StatisticsEnabled = true; } void Decl::PrintStats() { diff --git a/lib/AST/Stmt.cpp b/lib/AST/Stmt.cpp index 8b2e35376b..0deaaa83ba 100644 --- a/lib/AST/Stmt.cpp +++ b/lib/AST/Stmt.cpp @@ -78,11 +78,9 @@ void Stmt::addStmtClass(StmtClass s) { ++getStmtInfoTableEntry(s).Counter; } -static bool StatSwitch = false; - -bool Stmt::CollectingStats(bool Enable) { - if (Enable) StatSwitch = true; - return StatSwitch; +bool Stmt::StatisticsEnabled = false; +void Stmt::EnableStatistics() { + StatisticsEnabled = true; } Stmt *Stmt::IgnoreImplicit() { diff --git a/lib/Parse/ParseAST.cpp b/lib/Parse/ParseAST.cpp index 7e087ef7ea..236689184d 100644 --- a/lib/Parse/ParseAST.cpp +++ b/lib/Parse/ParseAST.cpp @@ -53,8 +53,8 @@ void clang::ParseAST(Preprocessor &PP, ASTConsumer *Consumer, void clang::ParseAST(Sema &S, bool PrintStats) { // Collect global stats on Decls/Stmts (until we have a module streamer). if (PrintStats) { - Decl::CollectingStats(true); - Stmt::CollectingStats(true); + Decl::EnableStatistics(); + Stmt::EnableStatistics(); } // Also turn on collection of stats inside of the Sema object. |