Fixed bug in RemoveDeadBindings when performing the mark-and-sweep over the
symbolic store: VarDecl's inserted into the sweep may not always bind to
anything; handle this special case just like bindings to uninitialized values.
llvm-svn: 47550
diff --git a/clang/Analysis/ValueState.cpp b/clang/Analysis/ValueState.cpp
index 3cbcd88d..75f719a 100644
--- a/clang/Analysis/ValueState.cpp
+++ b/clang/Analysis/ValueState.cpp
@@ -95,11 +95,9 @@
if (V->getType()->isPointerType()) {
- RVal X = GetRVal(St, lval::DeclVal(cast<VarDecl>(V)));
+ RVal X = GetRVal(St, lval::DeclVal(cast<VarDecl>(V)));
- assert (!X.isUnknown());
-
- if (X.isUninit())
+ if (X.isUnknownOrUninit())
continue;
LVal LV = cast<LVal>(X);