diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-07-14 23:43:06 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-07-14 23:43:06 +0000 |
commit | f0b28d7fe52f22a30c25d8f5fdb49d6c6303a59c (patch) | |
tree | 4fde811e045e8c9713082dfe04554f715cd63a38 /clang/lib/Analysis/UninitializedValues.cpp | |
parent | d7f2f9d07b0d61bbe12ab118d4402ef22882ce5b (diff) | |
download | bcm5719-llvm-f0b28d7fe52f22a30c25d8f5fdb49d6c6303a59c.tar.gz bcm5719-llvm-f0b28d7fe52f22a30c25d8f5fdb49d6c6303a59c.zip |
Fix false negative reported in PR 10358 by using 'Unknown' in -Wuninitialized to avoid cascading warnings. Patch by Kaelyn Uhrain.
llvm-svn: 135217
Diffstat (limited to 'clang/lib/Analysis/UninitializedValues.cpp')
-rw-r--r-- | clang/lib/Analysis/UninitializedValues.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Analysis/UninitializedValues.cpp b/clang/lib/Analysis/UninitializedValues.cpp index 1d6959d81b1..5e00eebec87 100644 --- a/clang/lib/Analysis/UninitializedValues.cpp +++ b/clang/lib/Analysis/UninitializedValues.cpp @@ -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; |