From 24388333364be0ce9d04a07fa9895baeeff78bda Mon Sep 17 00:00:00 2001 From: Anna Zaks Date: Thu, 21 Jun 2012 20:36:11 +0000 Subject: [PATCH] [analyzer] Do not step into statements while collecting function decls. CallGraph's recursive visitor only needs to collect declarations; their bodies will be processed later on. RecursiveASTVisitor will recurse on the bodies if the definition is provided along with declaration. Optimize, by not recursing on any of the statements. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158934 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Analysis/CallGraph.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/clang/Analysis/CallGraph.h b/include/clang/Analysis/CallGraph.h index 81afec0827..509de7bc21 100644 --- a/include/clang/Analysis/CallGraph.h +++ b/include/clang/Analysis/CallGraph.h @@ -102,7 +102,8 @@ public: void dump() const; void viewGraph() const; - /// Part of recursive declaration visitation. + /// Part of recursive declaration visitation. We recursively visit all the + /// Declarations to collect the root functions. bool VisitFunctionDecl(FunctionDecl *FD) { // We skip function template definitions, as their semantics is // only determined when they are instantiated. @@ -121,6 +122,9 @@ public: return true; } + // We are only collecting the declarations, so do not step into the bodies. + bool TraverseStmt(Stmt *S) { return true; } + bool shouldWalkTypesOfTypeLocs() const { return false; } private: -- 2.40.0