diff options
author | David Blaikie <dblaikie@gmail.com> | 2012-01-24 04:29:18 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2012-01-24 04:29:18 +0000 |
commit | 7e625b67e5f9bbee38634a07c11590c05e97a66f (patch) | |
tree | 54956d9c36150368f22b5bcb4d0f92365633f1b4 /clang/lib/Sema/AnalysisBasedWarnings.cpp | |
parent | 50cfa12752a2e746668b8e27e465a743fabfc408 (diff) | |
download | bcm5719-llvm-7e625b67e5f9bbee38634a07c11590c05e97a66f.tar.gz bcm5719-llvm-7e625b67e5f9bbee38634a07c11590c05e97a66f.zip |
Simple hack to do unreachable code analysis on template patterns.
llvm-svn: 148774
Diffstat (limited to 'clang/lib/Sema/AnalysisBasedWarnings.cpp')
-rw-r--r-- | clang/lib/Sema/AnalysisBasedWarnings.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp index e2d1e8c3315..5f1d8cc7b0e 100644 --- a/clang/lib/Sema/AnalysisBasedWarnings.cpp +++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp @@ -782,8 +782,7 @@ AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, return; // For code in dependent contexts, we'll do this at instantiation time. - if (cast<DeclContext>(D)->isDependentContext()) - return; + bool Dependent = cast<DeclContext>(D)->isDependentContext(); if (Diags.hasErrorOccurred() || Diags.hasFatalErrorOccurred()) { // Flush out any possibly unreachable diagnostics. @@ -826,7 +825,7 @@ AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, // Construct the analysis context with the specified CFG build options. // Emit delayed diagnostics. - if (!fscope->PossiblyUnreachableDiags.empty()) { + if (!fscope->PossiblyUnreachableDiags.empty() && !Dependent) { bool analyzed = false; // Register the expressions with the CFGBuilder. @@ -874,7 +873,7 @@ AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, // Warning: check missing 'return' - if (P.enableCheckFallThrough) { + if (P.enableCheckFallThrough && !Dependent) { const CheckFallThroughDiagnostics &CD = (isa<BlockDecl>(D) ? CheckFallThroughDiagnostics::MakeForBlock() : CheckFallThroughDiagnostics::MakeForFunction(D)); @@ -895,7 +894,7 @@ AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, } // Check for thread safety violations - if (P.enableThreadSafetyAnalysis) { + if (P.enableThreadSafetyAnalysis && !Dependent) { SourceLocation FL = AC.getDecl()->getLocation(); thread_safety::ThreadSafetyReporter Reporter(S, FL); thread_safety::runThreadSafetyAnalysis(AC, Reporter); |