summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/MemRegion.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-10-24 20:30:08 +0000
committerTed Kremenek <kremenek@apple.com>2008-10-24 20:30:08 +0000
commit8921d930d400dec278608a9ec245a2db34ef5aa8 (patch)
tree4e5a901bb8325726037e3fc8c1107d8b333ce963 /clang/lib/Analysis/MemRegion.cpp
parent3dfef1f2a33de41daf1661ea0606995707c88435 (diff)
downloadbcm5719-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.cpp21
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();
OpenPOWER on IntegriCloud