diff options
author | Ted Kremenek <kremenek@apple.com> | 2013-02-18 07:18:28 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2013-02-18 07:18:28 +0000 |
commit | 724cfee8b506ffef6f55e556a3329a7403ef7198 (patch) | |
tree | 1da358ffe9ecdd68c736168e5dc16ba9c7ec7523 /lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp | |
parent | f110a9c6876e36ef77a54b191ea4ecf3443ac620 (diff) |
Disable dead stores checker for template instantations. Fixes <rdar://problem/13213575>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175425 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp b/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp index e2f8395da9..f2e3e6d781 100644 --- a/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp @@ -419,6 +419,15 @@ class DeadStoresChecker : public Checker<check::ASTCodeBody> { public: void checkASTCodeBody(const Decl *D, AnalysisManager& mgr, BugReporter &BR) const { + + // Don't do anything for template instantiations. + // Proving that code in a template instantiation is "dead" + // means proving that it is dead in all instantiations. + // This same problem exists with -Wunreachable-code. + if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) + if (FD->isTemplateInstantiation()) + return; + if (LiveVariables *L = mgr.getAnalysis<LiveVariables>(D)) { CFG &cfg = *mgr.getCFG(D); AnalysisDeclContext *AC = mgr.getAnalysisDeclContext(D); |