aboutsummaryrefslogtreecommitdiff
path: root/Analysis/ValueState.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-02-21 19:30:14 +0000
committerTed Kremenek <kremenek@apple.com>2008-02-21 19:30:14 +0000
commitc3055ab39ac3535ffd581d33e21b72133099a6eb (patch)
tree151331e639d0210d93a520452eacfdd8ba2f1aa5 /Analysis/ValueState.cpp
parent443003ba3819c06ecf40e6376f92226630831f3d (diff)
RemoveDeadBindings should now check for UninitalizedVal, as it is a now
an error to cast it to LVal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47450 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Analysis/ValueState.cpp')
-rw-r--r--Analysis/ValueState.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/Analysis/ValueState.cpp b/Analysis/ValueState.cpp
index db2ef6badc..e175a1cd8f 100644
--- a/Analysis/ValueState.cpp
+++ b/Analysis/ValueState.cpp
@@ -94,8 +94,15 @@ ValueStateManager::RemoveDeadBindings(ValueState St, Stmt* Loc,
Marked.insert(V);
if (V->getType()->isPointerType()) {
- const LVal& LV =
- cast<LVal>(GetRVal(St, lval::DeclVal(cast<VarDecl>(V))));
+
+ RVal X = GetRVal(St, lval::DeclVal(cast<VarDecl>(V)));
+
+ assert (!X.isUnknown());
+
+ if (X.isUninit())
+ continue;
+
+ LVal LV = cast<LVal>(X);
for (RVal::symbol_iterator SI = LV.symbol_begin(), SE = LV.symbol_end();
SI != SE; ++SI) {