summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-01-24 00:50:08 +0000
committerTed Kremenek <kremenek@apple.com>2008-01-24 00:50:08 +0000
commit4f1da522cadb6a6892bcf2f8c93aa8dd34cf1d25 (patch)
tree6a6b0d039cd96dc634798d84665e38c582e02535
parentec3da554e63963344ed42364205cfc1f42bedfd0 (diff)
downloadbcm5719-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.cpp27
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();
OpenPOWER on IntegriCloud