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

Ted Kremenek kremenek at apple.com
Mon May 4 08:40:58 PDT 2009


Author: kremenek
Date: Mon May  4 10:40:58 2009
New Revision: 70870

URL: http://llvm.org/viewvc/llvm-project?rev=70870&view=rev
Log:
retain checker: Pull out logic for parameter annotations into a
separate method.

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=70870&r1=70869&r2=70870&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/CFRefCount.cpp (original)
+++ cfe/trunk/lib/Analysis/CFRefCount.cpp Mon May  4 10:40:58 2009
@@ -779,6 +779,9 @@
   RetainSummary* getCommonMethodSummary(const ObjCMethodDecl* MD,
                                         Selector S, QualType RetTy);
 
+  void updateSummaryArgEffFromAnnotations(RetainSummary &Summ, unsigned i,
+                                          const ParmVarDecl *PD);
+
   void updateSummaryFromAnnotations(RetainSummary &Summ,
                                     const ObjCMethodDecl *MD);
   
@@ -1092,6 +1095,22 @@
 
 
 void
+RetainSummaryManager::updateSummaryArgEffFromAnnotations(RetainSummary &Summ,
+                                                         unsigned i,
+                                                         const ParmVarDecl *PD){
+  if (PD->getAttr<ObjCOwnershipRetainAttr>())
+    Summ.setArgEffect(AF, i, IncRefMsg);
+  else if (PD->getAttr<ObjCOwnershipCFRetainAttr>())
+    Summ.setArgEffect(AF, i, IncRef);
+  else if (PD->getAttr<ObjCOwnershipReleaseAttr>())
+    Summ.setArgEffect(AF, i, DecRefMsg);
+  else if (PD->getAttr<ObjCOwnershipCFReleaseAttr>())
+    Summ.setArgEffect(AF, i, DecRef);
+  else if (PD->getAttr<ObjCOwnershipMakeCollectableAttr>())
+    Summ.setArgEffect(AF, i, MakeCollectable);  
+}
+
+void
 RetainSummaryManager::updateSummaryFromAnnotations(RetainSummary &Summ,
                                                    const ObjCMethodDecl *MD) {
   if (!MD)
@@ -1109,18 +1128,8 @@
   // Determine if there are any arguments with a specific ArgEffect.
   unsigned i = 0;
   for (ObjCMethodDecl::param_iterator I = MD->param_begin(),
-       E = MD->param_end(); I != E; ++I, ++i) {
-    if ((*I)->getAttr<ObjCOwnershipRetainAttr>())
-      Summ.setArgEffect(AF, i, IncRefMsg);
-    else if ((*I)->getAttr<ObjCOwnershipCFRetainAttr>())
-      Summ.setArgEffect(AF, i, IncRef);
-    else if ((*I)->getAttr<ObjCOwnershipReleaseAttr>())
-      Summ.setArgEffect(AF, i, DecRefMsg);
-    else if ((*I)->getAttr<ObjCOwnershipCFReleaseAttr>())
-      Summ.setArgEffect(AF, i, DecRef);
-    else if ((*I)->getAttr<ObjCOwnershipMakeCollectableAttr>())
-      Summ.setArgEffect(AF, i, MakeCollectable);
-  }
+       E = MD->param_end(); I != E; ++I, ++i)
+    updateSummaryArgEffFromAnnotations(Summ, i, *I);
   
   // Determine any effects on the receiver.
   if (MD->getAttr<ObjCOwnershipRetainAttr>())





More information about the cfe-commits mailing list