summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2015-03-03 14:54:25 +0000
committerManuel Klimek <klimek@google.com>2015-03-03 14:54:25 +0000
commit27ee25f73856ffa904d87f0fe1b49ae934e6b4bb (patch)
tree2b4016b96e7e0d46945cb0adeb271c1d65adfaf8 /clang/lib/Sema/SemaDecl.cpp
parent2d293400950ac0c72c18d31e54f70716830b6e67 (diff)
downloadbcm5719-llvm-27ee25f73856ffa904d87f0fe1b49ae934e6b4bb.tar.gz
bcm5719-llvm-27ee25f73856ffa904d87f0fe1b49ae934e6b4bb.zip
Make -Wuninitialized warn on pointer-to-member and comma operators.
`isTrackedVar` has been updated to also track records. `DeclRefExpr`s appearing on the left side of a comma operator are ignored, while those appearing on the right side are classified as `Use`. Patch by Enrico Pertoso. llvm-svn: 231068
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index eb5b7154936..b1268cc2336 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -8582,8 +8582,13 @@ namespace {
diag = diag::warn_uninit_self_reference_in_reference_init;
} else if (cast<VarDecl>(OrigDecl)->isStaticLocal()) {
diag = diag::warn_static_self_reference_in_init;
- } else {
+ } else if (isa<TranslationUnitDecl>(OrigDecl->getDeclContext()) ||
+ isa<NamespaceDecl>(OrigDecl->getDeclContext()) ||
+ DRE->getDecl()->getType()->isRecordType()) {
diag = diag::warn_uninit_self_reference_in_init;
+ } else {
+ // Local variables will be handled by the CFG analysis.
+ return;
}
S.DiagRuntimeBehavior(DRE->getLocStart(), DRE,
OpenPOWER on IntegriCloud