#define LLVM_CLANG_AST_DECLBASE_H
#include "clang/AST/Attr.h"
-#include "clang/AST/Statistics.h"
#include "clang/AST/Type.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/Support/PrettyStackTrace.h"
}
};
-#ifndef NDEBUG
- /// \brief The number of times we have dynamically checked for an
- /// Objective-C-specific declaration node.
- extern llvm::Statistic objc_decl_checks;
-
- /// \brief The number of times we have dynamically checked for a
- /// C++-specific declaration node.
- extern llvm::Statistic cxx_decl_checks;
-#endif
} // end clang.
} // end namespace clang
-// Enumerate C++ declarations
-CLANG_ISA_STATISTIC(NamespaceDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(UsingDirectiveDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(NamespaceAliasDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(CXXRecordDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(CXXMethodDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(CXXConstructorDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(CXXDestructorDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(CXXConversionDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(UsingDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(UsingShadowDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(LinkageSpecDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(StaticAssertDecl, cxx_decl_checks)
-
#endif
}
-// Enumerate C++ declarations
-CLANG_ISA_STATISTIC(FriendDecl, cxx_decl_checks)
-
#endif
};
} // end namespace clang
-
-// Enumerate Objective-C declarations
-CLANG_ISA_STATISTIC(ObjCIvarDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCAtDefsFieldDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCMethodDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCContainerDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCCategoryDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCProtocolDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCInterfaceDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCImplDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCCategoryImplDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCImplementationDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCPropertyDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCCompatibleAliasDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCPropertyImplDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCForwardProtocolDecl, objc_decl_checks)
-CLANG_ISA_STATISTIC(ObjCClassDecl, objc_decl_checks)
-
#endif
} /* end of namespace clang */
-// Enumerate C++ declarations
-CLANG_ISA_STATISTIC(UnresolvedUsingTypenameDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(ClassTemplateSpecializationDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(ClassTemplatePartialSpecializationDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(TemplateTypeParmDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(UnresolvedUsingValueDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(NonTypeTemplateParmDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(TemplateDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(FunctionTemplateDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(ClassTemplateDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(TemplateTemplateParmDecl, cxx_decl_checks)
-CLANG_ISA_STATISTIC(FriendTemplateDecl, cxx_decl_checks)
-
#endif
virtual child_iterator child_end();
};
-#ifndef NDEBUG
- /// \brief The number of times we have dynamically checked for an
- /// Objective-C-specific expression node.
- extern llvm::Statistic objc_expr_checks;
-
- /// \brief The number of times we have dynamically checked for a
- /// C++-specific expression node.
- extern llvm::Statistic cxx_expr_checks;
-#endif
} // end namespace clang
#endif
} // end namespace clang
-// Enumerate C++ expressions
-CLANG_ISA_STATISTIC(CXXOperatorCallExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXMemberCallExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXNamedCastExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXStaticCastExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXDynamicCastExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXReinterpretCastExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXConstCastExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXFunctionalCastExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXTypeidExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXBoolLiteralExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXNullPtrLiteralExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXThisExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXThrowExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXDefaultArgExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXZeroInitValueExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXNewExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXDeleteExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXPseudoDestructorExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(UnresolvedLookupExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(UnaryTypeTraitExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(DependentScopeDeclRefExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXConstructExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXBindTemporaryExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXBindReferenceExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXExprWithTemporaries, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXTemporaryObjectExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXUnresolvedConstructExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(CXXDependentScopeMemberExpr, cxx_expr_checks)
-CLANG_ISA_STATISTIC(UnresolvedMemberExpr, cxx_expr_checks)
-
#endif
} // end namespace clang
-// Enumerate Objective-C expressions
-CLANG_ISA_STATISTIC(ObjCStringLiteral, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCEncodeExpr, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCMessageExpr, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCSelectorExpr, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCProtocolExpr, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCIvarRefExpr, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCPropertyRefExpr, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCImplicitSetterGetterRefExpr, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCSuperExpr, objc_expr_checks)
-CLANG_ISA_STATISTIC(ObjCIsaExpr, objc_expr_checks)
-
#endif
+++ /dev/null
-//===--- Statistics.h - Helpers for Clang AST Statistics --------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file provides helper classes, functions, and macros for tracking
-// various statistics about the Clang AST and its usage.
-//
-//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_AST_STATISTICS_H
-#define LLVM_CLANG_AST_STATISTICS_H
-
-#ifndef NDEBUG
-#include "llvm/ADT/Statistic.h"
-#include "llvm/Support/Casting.h"
-
-/** \brief Tracks the number of time the \c isa() function template is
- * used to try to cast to the given \c Type, by bumping the \c Counter.
- *
- * Note that this macro must be expanded in the global scope, and that
- * both the type and the counter will be assumed to reside within the
- * \c clang namespace.
- */
-#define CLANG_ISA_STATISTIC(Type,Counter) \
-namespace llvm { \
-template <typename From> \
-struct isa_impl<clang::Type, From> { \
- static inline bool doit(const From &Val) { \
- ++clang::Counter; \
- return clang::Type::classof(&Val); \
- } \
-}; \
-}
-
-#else
-#define CLANG_ISA_STATISTIC(Type,Counter)
-#endif
-
-#endif // LLVM_CLANG_AST_STATISTICS_H
#include "clang/AST/StmtIterator.h"
#include "clang/AST/DeclGroup.h"
#include "clang/AST/FullExpr.h"
-#include "clang/AST/Statistics.h"
#include "llvm/ADT/SmallVector.h"
#include "clang/AST/ASTContext.h"
#include <string>
virtual child_iterator child_end();
};
-#ifndef NDEBUG
- /// \brief The number of times we have dynamically checked for an
- /// Objective-C-specific statement node.
- extern llvm::Statistic objc_stmt_checks;
-
- /// \brief The number of times we have dynamically checked for a
- /// C++-specific statement node.
- extern llvm::Statistic cxx_stmt_checks;
-#endif
-
} // end namespace clang
#endif
virtual child_iterator child_end();
};
-} // end namespace clang
-// Enumerate C++ statements
-CLANG_ISA_STATISTIC(CXXCatchStmt, cxx_stmt_checks)
-CLANG_ISA_STATISTIC(CXXTryStmt, cxx_stmt_checks)
+} // end namespace clang
#endif
} // end namespace clang
-// Enumerate Objective-C statements
-CLANG_ISA_STATISTIC(ObjCAtTryStmt, objc_stmt_checks)
-CLANG_ISA_STATISTIC(ObjCAtCatchStmt, objc_stmt_checks)
-CLANG_ISA_STATISTIC(ObjCAtFinallyStmt, objc_stmt_checks)
-CLANG_ISA_STATISTIC(ObjCAtThrowStmt, objc_stmt_checks)
-CLANG_ISA_STATISTIC(ObjCAtSynchronizedStmt, objc_stmt_checks)
-CLANG_ISA_STATISTIC(ObjCForCollectionStmt, objc_stmt_checks)
-
#endif
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/Linkage.h"
#include "clang/AST/NestedNameSpecifier.h"
-#include "clang/AST/Statistics.h"
#include "clang/AST/TemplateName.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/type_traits.h"
return cast<T>(getUnqualifiedDesugaredType());
}
-#ifndef NDEBUG
- /// \brief The number of times we have dynamically checked for an
- /// Objective-C-specific type node.
- extern llvm::Statistic objc_type_checks;
-
- /// \brief The number of times we have dynamically checked for a
- /// C++-specific type node.
- extern llvm::Statistic cxx_type_checks;
-#endif
} // end namespace clang
-// Enumerate Objective-C types
-CLANG_ISA_STATISTIC(ObjCInterfaceType, objc_type_checks)
-CLANG_ISA_STATISTIC(ObjCObjectPointerType, objc_type_checks)
-
-// Enumerate C++ types
-CLANG_ISA_STATISTIC(ReferenceType, cxx_type_checks)
-CLANG_ISA_STATISTIC(LValueReferenceType, cxx_type_checks)
-CLANG_ISA_STATISTIC(RValueReferenceType, cxx_type_checks)
-CLANG_ISA_STATISTIC(MemberPointerType, cxx_type_checks)
-CLANG_ISA_STATISTIC(DependentSizedArrayType, cxx_type_checks)
-CLANG_ISA_STATISTIC(DependentSizedExtVectorType, cxx_type_checks)
-CLANG_ISA_STATISTIC(UnresolvedUsingType, cxx_type_checks)
-CLANG_ISA_STATISTIC(DecltypeType, cxx_type_checks)
-CLANG_ISA_STATISTIC(TemplateTypeParmType, cxx_type_checks)
-CLANG_ISA_STATISTIC(SubstTemplateTypeParmType, cxx_type_checks)
-CLANG_ISA_STATISTIC(TemplateSpecializationType, cxx_type_checks)
-CLANG_ISA_STATISTIC(QualifiedNameType, cxx_type_checks)
-CLANG_ISA_STATISTIC(InjectedClassNameType, cxx_type_checks)
-CLANG_ISA_STATISTIC(DependentNameType, cxx_type_checks)
-
#endif
// 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"
#include <algorithm>
using namespace clang;
-#ifndef NDEBUG
-llvm::Statistic clang::objc_expr_checks =
- { "clang", "Number of checks for Objective-C expression nodes", 0, 0 };
-llvm::Statistic clang::cxx_expr_checks =
- { "clang", "Number of checks for C++ expression nodes", 0, 0 };
-#endif
-
//===----------------------------------------------------------------------===//
// Primary Expressions.
//===----------------------------------------------------------------------===//
#include <cstdio>
using namespace clang;
-#ifndef NDEBUG
-llvm::Statistic clang::objc_stmt_checks =
- { "clang", "Number of checks for Objective-C statement nodes", 0, 0 };
-llvm::Statistic clang::cxx_stmt_checks =
- { "clang", "Number of checks for C++ statement nodes", 0, 0 };
-#endif
-
static struct StmtClassNameTable {
const char *Name;
unsigned Counter;
#include "llvm/Support/raw_ostream.h"
using namespace clang;
-#ifndef NDEBUG
-llvm::Statistic clang::objc_type_checks =
- { "clang", "Number of checks for Objective-C type nodes", 0, 0 };
-llvm::Statistic clang::cxx_type_checks =
- { "clang", "Number of checks for C++ type nodes", 0, 0 };
-#endif
-
bool QualType::isConstant(QualType T, ASTContext &Ctx) {
if (T.isConstQualified())
return true;