diff options
| author | Ted Kremenek <kremenek@apple.com> | 2007-12-13 04:47:15 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2007-12-13 04:47:15 +0000 |
| commit | 78dcda605909a23c55c1498c71591f068c4cd82f (patch) | |
| tree | 0bd592be8333e6207cef9110a647fce24af09229 /clang | |
| parent | 37c36ed79a67ccb7fcc937533a38deca36b5a071 (diff) | |
| download | bcm5719-llvm-78dcda605909a23c55c1498c71591f068c4cd82f.tar.gz bcm5719-llvm-78dcda605909a23c55c1498c71591f068c4cd82f.zip | |
Fixed bug in live-variable analysis and uninitialized-values analysis where
we incorrectly examine the expression within a sizeof() for use in computing
dataflow values.
This fixes: PR 1858 (http://llvm.org/bugs/show_bug.cgi?id=1858)
llvm-svn: 44982
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/Analysis/LiveVariables.cpp | 1 | ||||
| -rw-r--r-- | clang/Analysis/UninitializedValues.cpp | 16 |
2 files changed, 14 insertions, 3 deletions
diff --git a/clang/Analysis/LiveVariables.cpp b/clang/Analysis/LiveVariables.cpp index eba1a77941f..a9322f2d905 100644 --- a/clang/Analysis/LiveVariables.cpp +++ b/clang/Analysis/LiveVariables.cpp @@ -93,6 +93,7 @@ void TransferFuncs::VisitUnaryOperator(UnaryOperator* U) { Stmt *S = U->getSubExpr(); switch (U->getOpcode()) { + case UnaryOperator::SizeOf: return; case UnaryOperator::PostInc: case UnaryOperator::PostDec: case UnaryOperator::PreInc: diff --git a/clang/Analysis/UninitializedValues.cpp b/clang/Analysis/UninitializedValues.cpp index aec31972796..9651814b02d 100644 --- a/clang/Analysis/UninitializedValues.cpp +++ b/clang/Analysis/UninitializedValues.cpp @@ -136,9 +136,19 @@ bool TransferFuncs::VisitCallExpr(CallExpr* C) { } bool TransferFuncs::VisitUnaryOperator(UnaryOperator* U) { - if (U->getOpcode() == UnaryOperator::AddrOf) - if (BlockVarDecl* VD = FindBlockVarDecl(U->getSubExpr())) - return V(VD,AD) = Initialized; + switch (U->getOpcode()) { + case UnaryOperator::AddrOf: + if (BlockVarDecl* VD = FindBlockVarDecl(U->getSubExpr())) + return V(VD,AD) = Initialized; + + break; + + case UnaryOperator::SizeOf: + return Initialized; + + default: + break; + } return Visit(U->getSubExpr()); } |

