diff options
Diffstat (limited to 'Analysis/ValueState.cpp')
-rw-r--r-- | Analysis/ValueState.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Analysis/ValueState.cpp b/Analysis/ValueState.cpp index 7f3e733dbb..b892fd6852 100644 --- a/Analysis/ValueState.cpp +++ b/Analysis/ValueState.cpp @@ -336,12 +336,16 @@ RVal ValueStateManager::GetRVal(ValueState St, Expr* E) { ValueState::ExprBindingsTy::TreeTy* T = St->SubExprBindings.SlimFind(E); - return T ? T->getValue().second : GetBlkExprRVal(St, E); + if (T) + return T->getValue().second; + + T = St->BlockExprBindings.SlimFind(E); + return T ? T->getValue().second : UnknownVal(); } RVal ValueStateManager::GetBlkExprRVal(ValueState St, Expr* E) { - assert (!isa<ParenExpr>(E)); + E = E->IgnoreParens(); switch (E->getStmtClass()) { case Stmt::CharacterLiteralClass: { |