[cfe-commits] r73198 - /cfe/trunk/lib/Analysis/CFRefCount.cpp

Ted Kremenek kremenek at apple.com
Thu Jun 11 11:17:24 PDT 2009


Author: kremenek
Date: Thu Jun 11 13:17:24 2009
New Revision: 73198

URL: http://llvm.org/viewvc/llvm-project?rev=73198&view=rev
Log:
Add summary lookup for IOServiceGetMatchingService.
Convert tabs to spaces.

Modified:
    cfe/trunk/lib/Analysis/CFRefCount.cpp

Modified: cfe/trunk/lib/Analysis/CFRefCount.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFRefCount.cpp?rev=73198&r1=73197&r2=73198&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/CFRefCount.cpp (original)
+++ cfe/trunk/lib/Analysis/CFRefCount.cpp Thu Jun 11 13:17:24 2009
@@ -637,10 +637,10 @@
   ///  objects.
   RetEffect ObjCAllocRetE;
 
-	/// ObjCInitRetE - Default return effect for init methods returning Objective-C
+  /// ObjCInitRetE - Default return effect for init methods returning Objective-C
   ///  objects.
   RetEffect ObjCInitRetE;
-	
+  
   RetainSummary DefaultSummary;
   RetainSummary* StopSummary;
   
@@ -780,8 +780,8 @@
      GCEnabled(gcenabled), AF(BPAlloc), ScratchArgs(AF.GetEmptyMap()),
      ObjCAllocRetE(gcenabled ? RetEffect::MakeGCNotOwned()
                              : RetEffect::MakeOwned(RetEffect::ObjC, true)),
-		 ObjCInitRetE(gcenabled ? RetEffect::MakeGCNotOwned()
-														:	RetEffect::MakeOwnedWhenTrackedReceiver()),
+     ObjCInitRetE(gcenabled ? RetEffect::MakeGCNotOwned()
+                            : RetEffect::MakeOwnedWhenTrackedReceiver()),
      DefaultSummary(AF.GetEmptyMap() /* per-argument effects (none) */,
                     RetEffect::MakeNoRet() /* return effect */,
                     MayEscape, /* default argument effect */
@@ -971,31 +971,42 @@
     
     // FIXME: This should all be refactored into a chain of "summary lookup"
     //  filters.
-		switch (strlen(FName)) {
-			default: break;
-			case 17:
-				// Handle: id NSMakeCollectable(CFTypeRef)
-				if (!memcmp(FName, "NSMakeCollectable", 17)) {
-					S = (RetTy == Ctx.getObjCIdType())
-							? getUnarySummary(FT, cfmakecollectable)
-							: getPersistentStopSummary();
-				}
-				break;
-			case 28:
-				if (!memcmp(FName, "IOServiceGetMatchingServices", 28)) {
-					// FIXES: <rdar://problem/6326900>
-					// This should be addressed using a API table.  This strcmp is also
-					// a little gross, but there is no need to super optimize here.
-					assert (ScratchArgs.isEmpty());
-					ScratchArgs = AF.Add(ScratchArgs, 1, DecRef);
-					S = getPersistentSummary(RetEffect::MakeNoRet(), DoNothing, DoNothing);
-				}
-				break;
-		}
-		
-		// Did we get a summary?
-		if (S)
-			break;
+    switch (strlen(FName)) {
+      default: break;
+      case 17:
+        // Handle: id NSMakeCollectable(CFTypeRef)
+        if (!memcmp(FName, "NSMakeCollectable", 17)) {
+          S = (RetTy == Ctx.getObjCIdType())
+              ? getUnarySummary(FT, cfmakecollectable)
+              : getPersistentStopSummary();
+        }
+        break;
+      
+      case 27:
+        if (!memcmp(FName, "IOServiceGetMatchingService", 27)) {
+          // Part of <rdar://problem/6961230>.
+          // This should be addressed using a API table.
+          assert (ScratchArgs.isEmpty());
+          ScratchArgs = AF.Add(ScratchArgs, 1, DecRef);
+          S = getPersistentSummary(RetEffect::MakeNoRet(), DoNothing, DoNothing);         
+        }
+        break;
+
+      case 28:
+        if (!memcmp(FName, "IOServiceGetMatchingServices", 28)) {
+          // FIXES: <rdar://problem/6326900>
+          // This should be addressed using a API table.  This strcmp is also
+          // a little gross, but there is no need to super optimize here.
+          assert (ScratchArgs.isEmpty());
+          ScratchArgs = AF.Add(ScratchArgs, 1, DecRef);
+          S = getPersistentSummary(RetEffect::MakeNoRet(), DoNothing, DoNothing);
+        }
+        break;
+    }
+    
+    // Did we get a summary?
+    if (S)
+      break;
 
     // Enable this code once the semantics of NSDeallocateObject are resolved
     // for GC.  <rdar://problem/6619988>
@@ -1180,19 +1191,19 @@
   if (!FD)
     return;
 
-	QualType RetTy = FD->getResultType();
-	
+  QualType RetTy = FD->getResultType();
+  
   // Determine if there is a special return effect for this method.
   if (isTrackedObjCObjectType(RetTy)) {
     if (FD->getAttr<NSReturnsRetainedAttr>()) {
       Summ.setRetEffect(ObjCAllocRetE);
     }
-		else if (FD->getAttr<CFReturnsRetainedAttr>()) {
+    else if (FD->getAttr<CFReturnsRetainedAttr>()) {
       Summ.setRetEffect(RetEffect::MakeOwned(RetEffect::CF, true));
-		}
-	}
-	else if (RetTy->getAsPointerType()) {
-		if (FD->getAttr<CFReturnsRetainedAttr>()) {
+    }
+  }
+  else if (RetTy->getAsPointerType()) {
+    if (FD->getAttr<CFReturnsRetainedAttr>()) {
       Summ.setRetEffect(RetEffect::MakeOwned(RetEffect::CF, true));
     }
   }
@@ -1386,7 +1397,7 @@
   // Create the "init" selector.  It just acts as a pass-through for the
   // receiver.
   addNSObjectMethSummary(GetNullarySelector("init", Ctx),
-												 getPersistentSummary(ObjCInitRetE, DecRefMsg));
+                         getPersistentSummary(ObjCInitRetE, DecRefMsg));
   
   // The next methods are allocators.
   RetainSummary *AllocSumm = getPersistentSummary(ObjCAllocRetE);  





More information about the cfe-commits mailing list