diff options
| author | Zhanyong Wan <wan@google.com> | 2010-10-31 04:22:34 +0000 |
|---|---|---|
| committer | Zhanyong Wan <wan@google.com> | 2010-10-31 04:22:34 +0000 |
| commit | e4f7df694d015c26487fd66878cdcb2d2de0ae83 (patch) | |
| tree | 1dcd214e3c313acbd51b464195c7fb80dda078bc /clang/lib/Checker | |
| parent | e6f21e4e6eb6a9cc51885d711ad875dfa99093a6 (diff) | |
| download | bcm5719-llvm-e4f7df694d015c26487fd66878cdcb2d2de0ae83.tar.gz bcm5719-llvm-e4f7df694d015c26487fd66878cdcb2d2de0ae83.zip | |
Make Clang static analyzer skip function template definitions. This fixes Clang PR 8426, 8427, & 8433. Reviewed by Ted Kremenek and Doug Gregor.
llvm-svn: 117853
Diffstat (limited to 'clang/lib/Checker')
| -rw-r--r-- | clang/lib/Checker/AnalysisConsumer.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Checker/AnalysisConsumer.cpp b/clang/lib/Checker/AnalysisConsumer.cpp index f902124613c..e1591a6a649 100644 --- a/clang/lib/Checker/AnalysisConsumer.cpp +++ b/clang/lib/Checker/AnalysisConsumer.cpp @@ -211,8 +211,10 @@ void AnalysisConsumer::HandleTranslationUnit(ASTContext &C) { case Decl::CXXMethod: case Decl::Function: { FunctionDecl* FD = cast<FunctionDecl>(D); - - if (FD->isThisDeclarationADefinition()) { + // We skip function template definitions, as their semantics is + // only determined when they are instantiated. + if (FD->isThisDeclarationADefinition() && + !FD->isDependentContext()) { if (!Opts.AnalyzeSpecificFunction.empty() && FD->getDeclName().getAsString() != Opts.AnalyzeSpecificFunction) break; |

