diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-01-24 00:50:08 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-01-24 00:50:08 +0000 |
commit | 671c9e8147e35876de34706dc356988e7717f1bf (patch) | |
tree | 62458e861491b4dbe3a15a3abfb6deb4dcc76793 /Analysis/GRConstants.cpp | |
parent | 2eafd0ebf19c879c9bc0061499ed788a1f5d1f71 (diff) |
Minor tweak in GetValue to avoid an extra check for ParenExprs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46294 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Analysis/GRConstants.cpp')
-rw-r--r-- | Analysis/GRConstants.cpp | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/Analysis/GRConstants.cpp b/Analysis/GRConstants.cpp index 62b007ab30..e1e664edb1 100644 --- a/Analysis/GRConstants.cpp +++ b/Analysis/GRConstants.cpp @@ -555,19 +555,24 @@ ExprValue GRConstants::GetValue(const StateTy& St, const LValue& LV) { } ExprValue GRConstants::GetValue(const StateTy& St, Stmt* S) { - if (Expr* E = dyn_cast<Expr>(S)) - S = E->IgnoreParens(); - - switch (S->getStmtClass()) { - case Stmt::DeclRefExprClass: - return GetValue(St, LValueDecl(cast<DeclRefExpr>(S)->getDecl())); + for (;;) { + switch (S->getStmtClass()) { + case Stmt::ParenExprClass: + S = cast<ParenExpr>(S)->getSubExpr(); + continue; + + case Stmt::DeclRefExprClass: + return GetValue(St, LValueDecl(cast<DeclRefExpr>(S)->getDecl())); - case Stmt::IntegerLiteralClass: - return RValue::GetRValue(ValMgr, cast<IntegerLiteral>(S)); + case Stmt::IntegerLiteralClass: + return RValue::GetRValue(ValMgr, cast<IntegerLiteral>(S)); - default: - break; - }; + default: + break; + }; + + break; + } StateTy::TreeTy* T = St.SlimFind(ValueKey(S, getCFG().isBlkExpr(S))); return T ? T->getValue().second : InvalidValue(); |