diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-10-24 20:30:08 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-10-24 20:30:08 +0000 |
commit | 8921d930d400dec278608a9ec245a2db34ef5aa8 (patch) | |
tree | 4e5a901bb8325726037e3fc8c1107d8b333ce963 /clang/lib/Analysis/MemRegion.cpp | |
parent | 3dfef1f2a33de41daf1661ea0606995707c88435 (diff) | |
download | bcm5719-llvm-8921d930d400dec278608a9ec245a2db34ef5aa8.tar.gz bcm5719-llvm-8921d930d400dec278608a9ec245a2db34ef5aa8.zip |
Added region ObjCObjectRegion that represents an instance of an Objective-C object.
llvm-svn: 58106
Diffstat (limited to 'clang/lib/Analysis/MemRegion.cpp')
-rw-r--r-- | clang/lib/Analysis/MemRegion.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/lib/Analysis/MemRegion.cpp b/clang/lib/Analysis/MemRegion.cpp index 9c76e452e88..5dad3560f0a 100644 --- a/clang/lib/Analysis/MemRegion.cpp +++ b/clang/lib/Analysis/MemRegion.cpp @@ -230,6 +230,27 @@ MemRegionManager::getObjCIvarRegion(const ObjCIvarDecl* d, return R; } +ObjCObjectRegion* +MemRegionManager::getObjCObjectRegion(const ObjCInterfaceDecl* d, + const MemRegion* superRegion) { + llvm::FoldingSetNodeID ID; + DeclRegion::ProfileRegion(ID, d, superRegion, + MemRegion::ObjCObjectRegionKind); + + void* InsertPos; + MemRegion* data = Regions.FindNodeOrInsertPos(ID, InsertPos); + ObjCObjectRegion* R = cast_or_null<ObjCObjectRegion>(data); + + if (!R) { + R = (ObjCObjectRegion*) A.Allocate<ObjCObjectRegion>(); + new (R) ObjCObjectRegion(d, superRegion); + Regions.InsertNode(R, InsertPos); + } + + return R; +} + + AnonPointeeRegion* MemRegionManager::getAnonPointeeRegion(const VarDecl* d) { llvm::FoldingSetNodeID ID; QualType T = d->getType(); |