aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/ValueState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Analysis/ValueState.cpp')
-rw-r--r--lib/Analysis/ValueState.cpp26
1 files changed, 9 insertions, 17 deletions
diff --git a/lib/Analysis/ValueState.cpp b/lib/Analysis/ValueState.cpp
index edc5b6d004..19ff06f004 100644
--- a/lib/Analysis/ValueState.cpp
+++ b/lib/Analysis/ValueState.cpp
@@ -106,26 +106,18 @@ ValueStateManager::RemoveDeadBindings(ValueState* St, Stmt* Loc,
Marked.insert(V);
- if (V->getType()->isPointerType()) {
+ RVal X = GetRVal(St, lval::DeclVal(cast<VarDecl>(V)));
- RVal X = GetRVal(St, lval::DeclVal(cast<VarDecl>(V)));
-
- if (X.isUnknownOrUndef())
- continue;
-
- LVal LV = cast<LVal>(X);
-
- for (RVal::symbol_iterator SI = LV.symbol_begin(), SE = LV.symbol_end();
- SI != SE; ++SI) {
- MarkedSymbols.insert(*SI);
- }
+ for (RVal::symbol_iterator SI = X.symbol_begin(), SE = X.symbol_end();
+ SI != SE; ++SI) {
+ MarkedSymbols.insert(*SI);
+ }
- if (!isa<lval::DeclVal>(LV))
- continue;
+ if (!isa<lval::DeclVal>(X))
+ continue;
- const lval::DeclVal& LVD = cast<lval::DeclVal>(LV);
- WList.push_back(LVD.getDecl());
- }
+ const lval::DeclVal& LVD = cast<lval::DeclVal>(X);
+ WList.push_back(LVD.getDecl());
}
// Remove dead variable bindings.