diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-03-30 18:56:13 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-03-30 18:56:13 +0000 |
commit | f540305c5d834ad9412b41805b81a74249b7c5af (patch) | |
tree | 1de198a9d3c8ac599ac506de37b77b1c938e077d /lib/AST/DeclBase.cpp | |
parent | 8891c4277a2e5b729214165414dcfe929b06e9b0 (diff) |
Introduce new AST statistics that keep track of the number of isa (or
dyn_cast) invocations for C++ and Objective-C types, declarations,
expressions, and statements. The statistics will be printed when
-print-stats is provided to Clang -cc1, with results such as:
277073 clang - Number of checks for C++ declaration nodes
13311 clang - Number of checks for C++ expression nodes
18 clang - Number of checks for C++ statement nodes
174182 clang - Number of checks for C++ type nodes
92300 clang - Number of checks for Objective-C declaration nodes
9800 clang - Number of checks for Objective-C expression nodes
7 clang - Number of checks for Objective-C statement nodes
65733 clang - Number of checks for Objective-C type nodes
The statistics are only gathered when NDEBUG is not defined, since
they introduce potentially-expensive operations into very low-level
routines (isa).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99912 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/DeclBase.cpp')
-rw-r--r-- | lib/AST/DeclBase.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/AST/DeclBase.cpp b/lib/AST/DeclBase.cpp index c693e153dd..522875f64f 100644 --- a/lib/AST/DeclBase.cpp +++ b/lib/AST/DeclBase.cpp @@ -35,6 +35,13 @@ using namespace clang; // Statistics //===----------------------------------------------------------------------===// +#ifndef NDEBUG +llvm::Statistic clang::objc_decl_checks = + { "clang", "Number of checks for Objective-C declaration nodes", 0, 0 }; +llvm::Statistic clang::cxx_decl_checks = + { "clang", "Number of checks for C++ declaration nodes", 0, 0 }; +#endif + #define DECL(Derived, Base) static int n##Derived##s = 0; #include "clang/AST/DeclNodes.def" |