diff options
author | Manuel Klimek <klimek@google.com> | 2015-03-03 14:54:25 +0000 |
---|---|---|
committer | Manuel Klimek <klimek@google.com> | 2015-03-03 14:54:25 +0000 |
commit | 27ee25f73856ffa904d87f0fe1b49ae934e6b4bb (patch) | |
tree | 2b4016b96e7e0d46945cb0adeb271c1d65adfaf8 /clang/lib/Sema/SemaDecl.cpp | |
parent | 2d293400950ac0c72c18d31e54f70716830b6e67 (diff) | |
download | bcm5719-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.cpp | 7 |
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, |