aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/GRExprEngine.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-08-28 18:43:46 +0000
committerTed Kremenek <kremenek@apple.com>2008-08-28 18:43:46 +0000
commit982e674e39b8022ff7dc020f9ed371f3904549c3 (patch)
tree18f5cb86594689febfc88e8a3ce132da7c64d4a0 /lib/Analysis/GRExprEngine.cpp
parentaa1f9f1d50adf294674b74510b62e863b68572bc (diff)
Fixed analyzer caching bug involving the transfer function for loads.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55494 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/GRExprEngine.cpp')
-rw-r--r--lib/Analysis/GRExprEngine.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp
index 75ba46051f..affb02a962 100644
--- a/lib/Analysis/GRExprEngine.cpp
+++ b/lib/Analysis/GRExprEngine.cpp
@@ -954,22 +954,23 @@ void GRExprEngine::EvalLoad(NodeSet& Dst, Expr* Ex, NodeTy* Pred,
return;
// Proceed with the load.
+ ProgramPoint::Kind K = ProgramPoint::PostLoadKind;
// FIXME: Currently symbolic analysis "generates" new symbols
// for the contents of values. We need a better approach.
// FIXME: The "CheckOnly" option exists only because Array and Field
// loads aren't fully implemented. Eventually this option will go away.
-
+
if (CheckOnly)
- MakeNode(Dst, Ex, Pred, St);
+ MakeNode(Dst, Ex, Pred, St, K);
else if (location.isUnknown()) {
// This is important. We must nuke the old binding.
- MakeNode(Dst, Ex, Pred, SetRVal(St, Ex, UnknownVal()));
+ MakeNode(Dst, Ex, Pred, SetRVal(St, Ex, UnknownVal()), K);
}
else
MakeNode(Dst, Ex, Pred, SetRVal(St, Ex, GetRVal(St, cast<LVal>(location),
- Ex->getType())));
+ Ex->getType())), K);
}
const GRState* GRExprEngine::EvalLocation(Expr* Ex, NodeTy* Pred,