diff options
author | Anna Zaks <ganna@apple.com> | 2012-03-13 19:31:54 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-03-13 19:31:54 +0000 |
commit | aa19abe9786374606819cc910e8b864374b4bcdb (patch) | |
tree | a215c8049831e2bee07c253fbeeca16b7092b148 /clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp | |
parent | e756ce0c5def12cc4a1781a589e1abcd4d4b68a8 (diff) | |
download | bcm5719-llvm-aa19abe9786374606819cc910e8b864374b4bcdb.tar.gz bcm5719-llvm-aa19abe9786374606819cc910e8b864374b4bcdb.zip |
[analyzer] Minor: factor out logic for determining if we should skip a
function.
llvm-svn: 152649
Diffstat (limited to 'clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp b/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp index 54be4f7bcff..d4d59117405 100644 --- a/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp +++ b/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp @@ -191,6 +191,7 @@ public: void HandleDeclContextDeclFunction(ASTContext &C, Decl *D); void HandleCode(Decl *D, SetOfDecls *VisitedCallees = 0); + bool skipFunction(Decl *D); void RunPathSensitiveChecks(Decl *D, SetOfDecls *VisitedCallees); void ActionExprEngine(Decl *D, bool ObjCGCEnabled, SetOfDecls *VisitedCallees); }; @@ -384,20 +385,28 @@ static std::string getFunctionName(const Decl *D) { return ""; } -void AnalysisConsumer::HandleCode(Decl *D, SetOfDecls *VisitedCallees) { +bool AnalysisConsumer::skipFunction(Decl *D) { if (!Opts.AnalyzeSpecificFunction.empty() && getFunctionName(D) != Opts.AnalyzeSpecificFunction) - return; - - DisplayFunction(D); + return true; // Don't run the actions on declarations in header files unless // otherwise specified. SourceManager &SM = Ctx->getSourceManager(); SourceLocation SL = SM.getExpansionLoc(D->getLocation()); if (!Opts.AnalyzeAll && !SM.isFromMainFile(SL)) + return true; + + return false; +} + +void AnalysisConsumer::HandleCode(Decl *D, SetOfDecls *VisitedCallees) { + + if (skipFunction(D)) return; + DisplayFunction(D); + // Clear the AnalysisManager of old AnalysisDeclContexts. Mgr->ClearContexts(); |