summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-03-15 05:22:28 +0000
committerTed Kremenek <kremenek@apple.com>2011-03-15 05:22:28 +0000
commit1a47f366b7620b2c6724a9e7311632bb124987cf (patch)
tree0420f22960373a04b1959e93ee62af91eaf6a8a0
parente4b8ac9fef8951c24f71eae49fd0956d71f0e413 (diff)
downloadbcm5719-llvm-1a47f366b7620b2c6724a9e7311632bb124987cf.tar.gz
bcm5719-llvm-1a47f366b7620b2c6724a9e7311632bb124987cf.zip
Split warnings from -Wuninitialized-experimental into "must-be-initialized" and "may-be-initialized" warnings, each controlled by different flags.
llvm-svn: 127669
-rw-r--r--clang/include/clang/Basic/DiagnosticGroups.td2
-rw-r--r--clang/lib/Analysis/UninitializedValues.cpp3
-rw-r--r--clang/lib/Sema/AnalysisBasedWarnings.cpp2
3 files changed, 6 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
index 31d9ef389d7..4d3eec0f847 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -136,7 +136,7 @@ def Switch : DiagGroup<"switch", [SwitchEnum]>;
def Trigraphs : DiagGroup<"trigraphs">;
def : DiagGroup<"type-limits">;
-
+def Uninitialized : DiagGroup<"uninitialized">;
def UninitializedMaybe : DiagGroup<"uninitialized-maybe">;
def UnknownPragmas : DiagGroup<"unknown-pragmas">;
def UnknownAttributes : DiagGroup<"unknown-attributes">;
diff --git a/clang/lib/Analysis/UninitializedValues.cpp b/clang/lib/Analysis/UninitializedValues.cpp
index f651b474a0a..31ee412815c 100644
--- a/clang/lib/Analysis/UninitializedValues.cpp
+++ b/clang/lib/Analysis/UninitializedValues.cpp
@@ -198,6 +198,9 @@ static BinaryOperator *getLogicalOperatorInChain(const CFGBlock *block) {
return 0;
const CFGStmt *cstmt = block->front().getAs<CFGStmt>();
+ if (!cstmt)
+ return 0;
+
BinaryOperator *b = llvm::dyn_cast_or_null<BinaryOperator>(cstmt->getStmt());
if (!b || !b->isLogicalOp())
diff --git a/clang/lib/Sema/AnalysisBasedWarnings.cpp b/clang/lib/Sema/AnalysisBasedWarnings.cpp
index e71f2dfb866..3d00c7fe7e0 100644
--- a/clang/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/clang/lib/Sema/AnalysisBasedWarnings.cpp
@@ -608,6 +608,8 @@ AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P,
CheckUnreachable(S, AC);
if (Diags.getDiagnosticLevel(diag::warn_uninit_var, D->getLocStart())
+ != Diagnostic::Ignored ||
+ Diags.getDiagnosticLevel(diag::warn_maybe_uninit_var, D->getLocStart())
!= Diagnostic::Ignored) {
ASTContext &ctx = D->getASTContext();
llvm::OwningPtr<CFG> tmpCFG;
OpenPOWER on IntegriCloud