summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/AnalysisBasedWarnings.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2012-01-24 04:29:18 +0000
committerDavid Blaikie <dblaikie@gmail.com>2012-01-24 04:29:18 +0000
commit7e625b67e5f9bbee38634a07c11590c05e97a66f (patch)
tree54956d9c36150368f22b5bcb4d0f92365633f1b4 /clang/lib/Sema/AnalysisBasedWarnings.cpp
parent50cfa12752a2e746668b8e27e465a743fabfc408 (diff)
downloadbcm5719-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.cpp9
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);
OpenPOWER on IntegriCloud