diff options
| author | Ted Kremenek <kremenek@apple.com> | 2008-08-28 18:43:46 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2008-08-28 18:43:46 +0000 |
| commit | f1b9209a34aa5e22b8c7943f54cb77ccf52d42d6 (patch) | |
| tree | 0fe1a39853769aa64d128a439d9408de7645350a /clang/lib/Analysis/GRExprEngine.cpp | |
| parent | 8c8616377dbddb73a9b3c20df075b18035259f6e (diff) | |
| download | bcm5719-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.cpp | 9 |
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, |

