diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2008-12-11 09:08:46 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2008-12-11 09:08:46 +0000 |
commit | c5458622a30ede903e8d1e800cbf9382bd45b69f (patch) | |
tree | 568a3a28f7847fc5cc50d955a6860f3763afb0fc /lib/Analysis/MemRegion.cpp | |
parent | 3bb662a8635a1f85a64719759ead76abffe0e172 (diff) |
Identify AnonPointeeRegion by the symbol that is concretized.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60870 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/MemRegion.cpp')
-rw-r--r-- | lib/Analysis/MemRegion.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/Analysis/MemRegion.cpp b/lib/Analysis/MemRegion.cpp index 22df07b716..1e580a8cd3 100644 --- a/lib/Analysis/MemRegion.cpp +++ b/lib/Analysis/MemRegion.cpp @@ -52,18 +52,14 @@ void AnonTypedRegion::ProfileRegion(llvm::FoldingSetNodeID& ID, QualType T, } QualType AnonPointeeRegion::getType(ASTContext& C) const { - QualType T = C.getCanonicalType(Pointer->getType(C)); - PointerType* PTy = cast<PointerType>(T.getTypePtr()); - - QualType PointeeTy = C.getCanonicalType(PTy->getPointeeType()); - return PointeeTy; + return C.getCanonicalType(T); } void AnonPointeeRegion::ProfileRegion(llvm::FoldingSetNodeID& ID, - const TypedRegion* R, + SymbolRef Sym, const MemRegion* superRegion) { ID.AddInteger((unsigned) AnonPointeeRegionKind); - ID.AddPointer(R); + Sym.Profile(ID); ID.AddPointer(superRegion); } @@ -394,11 +390,12 @@ MemRegionManager::getAnonTypedRegion(QualType t, const MemRegion* superRegion) { return R; } -AnonPointeeRegion* MemRegionManager::getAnonPointeeRegion(const TypedRegion* r) { +AnonPointeeRegion* MemRegionManager::getAnonPointeeRegion(SymbolRef Sym, + QualType T) { llvm::FoldingSetNodeID ID; MemRegion* superRegion = getUnknownRegion(); - AnonPointeeRegion::ProfileRegion(ID, r, superRegion); + AnonPointeeRegion::ProfileRegion(ID, Sym, superRegion); void* InsertPos; MemRegion* data = Regions.FindNodeOrInsertPos(ID, InsertPos); @@ -406,7 +403,7 @@ AnonPointeeRegion* MemRegionManager::getAnonPointeeRegion(const TypedRegion* r) if (!R) { R = (AnonPointeeRegion*) A.Allocate<AnonPointeeRegion>(); - new (R) AnonPointeeRegion(r, superRegion); + new (R) AnonPointeeRegion(Sym, T, superRegion); Regions.InsertNode(R, InsertPos); } |