diff options
Diffstat (limited to 'lib/Analysis/ValueState.cpp')
-rw-r--r-- | lib/Analysis/ValueState.cpp | 26 |
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. |