diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-07-14 01:12:46 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-07-14 01:12:46 +0000 |
commit | 8203725f37fbb45ded343e4378247fee3389c0da (patch) | |
tree | 9747d8904df212fa9d678be2227c404d433fa1ff /lib/Analysis/GRExprEngine.cpp | |
parent | 66ad201eb59147fb47816ce961430f05b28203b2 (diff) |
Instead of recovering from a wrong invalidation, this patch aims to
invalidate the region correctly. It uses the cast-to type to invalidate
the region when available. To avoid invalid cast-to type like 'void*' or 'id',
region store now only records non-generic casts of regions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75580 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/GRExprEngine.cpp')
-rw-r--r-- | lib/Analysis/GRExprEngine.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp index 6bc70d5925..31ee3fc323 100644 --- a/lib/Analysis/GRExprEngine.cpp +++ b/lib/Analysis/GRExprEngine.cpp @@ -1119,9 +1119,9 @@ void GRExprEngine::EvalLoad(NodeSet& Dst, Expr* Ex, NodeTy* Pred, // invalidate(y); // 'x' now binds to a symbolic region // int z = *y; // - if (isa<Loc>(V) && !Loc::IsLocType(Ex->getType())) { - V = EvalCast(V, Ex->getType()); - } + //if (isa<Loc>(V) && !Loc::IsLocType(Ex->getType())) { + // V = EvalCast(V, Ex->getType()); + //} MakeNode(Dst, Ex, Pred, state->bindExpr(Ex, V), K, tag); } |