Fix false negative reported in PR 10358 by using 'Unknown' in -Wuninitialized to avoid cascading warnings. Patch by Kaelyn Uhrain.

llvm-svn: 135217
This commit is contained in:
Ted Kremenek
2011-07-14 23:43:06 +00:00
parent d7f2f9d07b
commit f0b28d7fe5
2 changed files with 10 additions and 8 deletions

View File

@@ -495,9 +495,11 @@ void TransferFunctions::VisitBinaryOperator(clang::BinaryOperator *bo) {
ValueVector::reference val = vals[vd];
if (isUninitialized(val)) {
if (bo->getOpcode() != BO_Assign)
if (bo->getOpcode() != BO_Assign) {
reportUninit(res.getDeclRefExpr(), vd, isAlwaysUninit(val));
val = Initialized;
val = Unknown;
} else
val = Initialized;
}
return;
}
@@ -526,7 +528,7 @@ void TransferFunctions::VisitUnaryOperator(clang::UnaryOperator *uo) {
if (isUninitialized(val)) {
reportUninit(res.getDeclRefExpr(), vd, isAlwaysUninit(val));
// Don't cascade warnings.
val = Initialized;
val = Unknown;
}
return;
}
@@ -558,7 +560,7 @@ void TransferFunctions::VisitCastExpr(clang::CastExpr *ce) {
if (isUninitialized(val)) {
reportUninit(res.getDeclRefExpr(), vd, isAlwaysUninit(val));
// Don't cascade warnings.
vals[vd] = Initialized;
vals[vd] = Unknown;
}
}
return;