aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-03-11 03:54:24 +0000
committerTed Kremenek <kremenek@apple.com>2009-03-11 03:54:24 +0000
commit21028dd8850c64a414f7a82dfddcc291351203d6 (patch)
treebf6b8106d26ff87deb4f4588e33d6b127985d8bd
parent4018a28ba12c9cbc0e41101bc5d8c1c2d78e355e (diff)
GRExprEngine::ProcessBranch: Don't register a "pretty-stack printer" when the Condition is null.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66636 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Analysis/GRExprEngine.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp
index c6457d9be3..6ff01fc5c9 100644
--- a/lib/Analysis/GRExprEngine.cpp
+++ b/lib/Analysis/GRExprEngine.cpp
@@ -543,10 +543,6 @@ const GRState* GRExprEngine::MarkBranch(const GRState* state,
void GRExprEngine::ProcessBranch(Stmt* Condition, Stmt* Term,
BranchNodeBuilder& builder) {
- PrettyStackTraceLoc CrashInfo(getContext().getSourceManager(),
- Condition->getLocStart(),
- "Error evaluating branch");
-
// Remove old bindings for subexpressions.
const GRState* PrevState =
StateMgr.RemoveSubExprBindings(builder.getState());
@@ -557,6 +553,10 @@ void GRExprEngine::ProcessBranch(Stmt* Condition, Stmt* Term,
return;
}
+ PrettyStackTraceLoc CrashInfo(getContext().getSourceManager(),
+ Condition->getLocStart(),
+ "Error evaluating branch");
+
SVal V = GetSVal(PrevState, Condition);
switch (V.getBaseKind()) {
@@ -2380,11 +2380,10 @@ void GRExprEngine::VisitUnaryOperator(UnaryOperator* U, NodeTy* Pred,
continue;
}
- // Handle all other values.
-
+ // Handle all other values.
BinaryOperator::Opcode Op = U->isIncrementOp() ? BinaryOperator::Add
: BinaryOperator::Sub;
-
+
SVal Result = EvalBinOp(Op, V2, MakeConstantVal(1U, U));
state = BindExpr(state, U, U->isPostfix() ? V2 : Result);