[cfe-commits] r52051 - in /cfe/trunk/lib/AST: DeclObjC.cpp TranslationUnit.cpp

Fariborz Jahanian fjahanian at apple.com
Fri Jun 6 10:31:07 PDT 2008


On Jun 6, 2008, at 10:21 AM, Ted Kremenek wrote:

> Author: kremenek
> Date: Fri Jun  6 12:21:42 2008
> New Revision: 52051
>
> URL: http://llvm.org/viewvc/llvm-project?rev=52051&view=rev
> Log:
> Because of a lack of a clear ownership role between  
> ObjCInterfaceDecls and
> ObjCPropertyDecls, have TranslationUnit destroy ObjCPropertyDecls.  
> This is a

I am not sure what you meant by ownership role? ObjCInterfaceDecls has  
the list of properties declared for the class. This is no different  
than ivars, methods, etc.

- Fariborz

>
> horrible hack, and must be removed eventually.
>
> Modified:
>    cfe/trunk/lib/AST/DeclObjC.cpp
>    cfe/trunk/lib/AST/TranslationUnit.cpp
>
> Modified: cfe/trunk/lib/AST/DeclObjC.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclObjC.cpp?rev=52051&r1=52050&r2=52051&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/lib/AST/DeclObjC.cpp (original)
> +++ cfe/trunk/lib/AST/DeclObjC.cpp Fri Jun  6 12:21:42 2008
> @@ -79,13 +79,11 @@
>
>   for (classmeth_iterator I=classmeth_begin(), E=classmeth_end(); I! 
> =E; ++I)
>     if (*I) (*I)->Destroy(C);
> -
> -  // FIXME: Cannot destroy properties right now because the  
> properties of
> -  //  both the super class and this class are in this array.  This  
> can
> -  //  cause double-deletions.
> -  //for (classprop_iterator I=classprop_begin(), E=classprop_end();  
> I!=E; ++I)
> -//    if (*I) (*I)->Destroy(C);
> -//
> +
> +  // FIXME: Because there is no clear ownership
> +  //  role between ObjCInterfaceDecls and the ObjCPropertyDecls  
> that they
> +  //  reference, we destroy ObjCPropertyDecls in ~TranslationUnit.
> +
>   Decl::Destroy(C);
> }
>
>
> Modified: cfe/trunk/lib/AST/TranslationUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/TranslationUnit.cpp?rev=52051&r1=52050&r2=52051&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/lib/AST/TranslationUnit.cpp (original)
> +++ cfe/trunk/lib/AST/TranslationUnit.cpp Fri Jun  6 12:21:42 2008
> @@ -37,6 +37,20 @@
>       if (Killed.count(*I)) continue;
>
>       Killed.insert(*I);
> +
> +      // FIXME: This is a horrible hack.  Because there is no clear  
> ownership
> +      //  role between ObjCInterfaceDecls and the ObjCPropertyDecls  
> that they
> +      //  reference, we need to destroy ObjCPropertyDecls here.   
> This will
> +      //  eventually be fixed when the ownership of  
> ObjCPropertyDecls gets
> +      //  cleaned up.
> +      if (ObjCInterfaceDecl* IDecl = dyn_cast<ObjCInterfaceDecl>(*I))
> +        for (ObjCInterfaceDecl::classprop_iterator ID=IDecl- 
> >classprop_begin(),
> +             ED=IDecl->classprop_end(); ID!=ED; ++ID) {
> +          if (Killed.count(*ID)) continue;
> +          Killed.insert(*ID);
> +          (*ID)->Destroy(*Context);
> +        }
> +
>       (*I)->Destroy(*Context);
>     }
>   }
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list