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 | 4f1da522cadb6a6892bcf2f8c93aa8dd34cf1d25 (patch) | |
| tree | 6a6b0d039cd96dc634798d84665e38c582e02535 | |
| parent | ec3da554e63963344ed42364205cfc1f42bedfd0 (diff) | |
| download | bcm5719-llvm-4f1da522cadb6a6892bcf2f8c93aa8dd34cf1d25.tar.gz bcm5719-llvm-4f1da522cadb6a6892bcf2f8c93aa8dd34cf1d25.zip | |
Minor tweak in GetValue to avoid an extra check for ParenExprs.
llvm-svn: 46294
| -rw-r--r-- | clang/Analysis/GRConstants.cpp | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/clang/Analysis/GRConstants.cpp b/clang/Analysis/GRConstants.cpp index 62b007ab30b..e1e664edb12 100644 --- a/clang/Analysis/GRConstants.cpp +++ b/clang/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(); |

