]> granicus.if.org Git - clang/commitdiff
MemRegionManager: Migrate getObjCObjectRegion() and getTypedViewRegion() to use
authorTed Kremenek <kremenek@apple.com>
Tue, 23 Jun 2009 00:04:09 +0000 (00:04 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 23 Jun 2009 00:04:09 +0000 (00:04 +0000)
the new trait-based construction of MemRegion objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73926 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/MemRegion.cpp

index 2afd0b40ec907d6b92c8dd9d79f6fba1d5b055fc..bd42858a4fa040665393bfbbf447949dc765cfff 100644 (file)
@@ -325,40 +325,13 @@ MemRegionManager::getObjCIvarRegion(const ObjCIvarDecl* d,
 
 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;
+                                      const MemRegion* superRegion) {
+  return getRegion<ObjCObjectRegion>(d, superRegion);
 }
 
 TypedViewRegion* 
 MemRegionManager::getTypedViewRegion(QualType t, const MemRegion* superRegion) {
-  llvm::FoldingSetNodeID ID;
-  TypedViewRegion::ProfileRegion(ID, t, superRegion);
-
-  void* InsertPos;
-  MemRegion* data = Regions.FindNodeOrInsertPos(ID, InsertPos);
-  TypedViewRegion* R = cast_or_null<TypedViewRegion>(data);
-
-  if (!R) {
-    R = (TypedViewRegion*) A.Allocate<TypedViewRegion>();
-    new (R) TypedViewRegion(t, superRegion);
-    Regions.InsertNode(R, InsertPos);
-  }
-
-  return R;
+  return getRegion<TypedViewRegion>(t, superRegion);
 }
 
 AllocaRegion* MemRegionManager::getAllocaRegion(const Expr* E, unsigned cnt) {