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 | 739830d278b0a174edc59edcfedaecec53d36e3f (patch) | |
tree | ff351343abec0fe19ab7405069709bff04e3777a /lib/Checker/AnalysisConsumer.cpp | |
parent | 96e93660124c8028a4c3bcc038ab0cdd18cd7ab2 (diff) |
Make Clang static analyzer skip function template definitions. This fixes Clang PR 8426, 8427, & 8433. Reviewed by Ted Kremenek and Doug Gregor.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117853 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Checker/AnalysisConsumer.cpp')
-rw-r--r-- | lib/Checker/AnalysisConsumer.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/Checker/AnalysisConsumer.cpp b/lib/Checker/AnalysisConsumer.cpp index f902124613..e1591a6a64 100644 --- a/lib/Checker/AnalysisConsumer.cpp +++ b/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; |