summaryrefslogtreecommitdiffstats
path: root/clang/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
commitf1b9209a34aa5e22b8c7943f54cb77ccf52d42d6 (patch)
tree0fe1a39853769aa64d128a439d9408de7645350a /clang/lib/Analysis/GRExprEngine.cpp
parent8c8616377dbddb73a9b3c20df075b18035259f6e (diff)
downloadbcm5719-llvm-f1b9209a34aa5e22b8c7943f54cb77ccf52d42d6.tar.gz
bcm5719-llvm-f1b9209a34aa5e22b8c7943f54cb77ccf52d42d6.zip
Fixed analyzer caching bug involving the transfer function for loads.
llvm-svn: 55494
Diffstat (limited to 'clang/lib/Analysis/GRExprEngine.cpp')
-rw-r--r--clang/lib/Analysis/GRExprEngine.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp
index 75ba46051ff..affb02a962a 100644
--- a/clang/lib/Analysis/GRExprEngine.cpp
+++ b/clang/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,
OpenPOWER on IntegriCloud