[cfe-dev] Objective-C tidy up
David Chisnall
theraven at sucs.org
Tue Jun 3 04:39:49 PDT 2008
On 3 Jun 2008, at 07:33, Chris Lattner wrote:
>
> On Jun 1, 2008, at 10:07 AM, David Chisnall wrote:
>
>> Hi,
>>
>> Here's the next installment of my ObjC changes. This is fairly
>> minor, although the diff is quite large. The biggest change is
>> that I've moved common code used to generate Objective-C methods
>> and C functions out into a separate method in CodeGenFunction and
>> I've moved GenerateObjCMethod from CodeGenFunction.cpp into
>> CGObjC.cpp where it should probably have been from the start.
>>
>> This diff also includes small changes to Sema to make self and _cmd
>> implicit parameters. At some point, I imagine these will be pulled
>> out into a superclass for method decls that can be used for both
>> Objective-C and C++ methods.
>
> Why should self and _cmd be ParmVarDecls? Shouldn't they be
> PredefinedExprs?
That's what I did to start with, but PredefinedExprs need special
handling in codegen, while ParmVarDecls are automatically turned into
loads of %var.addr. Since they are parameters, and since it
simplifies the rest of the implementation, it seemed like a
ParmVarDecl would be the right thing to choose.
> +++ include/clang/AST/DeclObjC.h (working copy)
> @@ -91,7 +91,8 @@
> // The following are only used for method definitions, null
> otherwise.
> // FIXME: space savings opportunity, consider a sub-class.
> Stmt *Body;
> - ParmVarDecl *SelfDecl;
> + // Decls for implicit parameters
> + llvm::SmallVector<ParmVarDecl *, 2> ImplicitParamInfo;
>
> If there are always exactly two of these, just use:
>
> ParmVarDecl *ImplicitParamInfo[2];
There will be three for the Étoilé runtime. Someone expressed
interest in porting Objective-C to the COLA runtime from the
Viewpoints Research Institute as well, and this would have somewhere
between one and four depending on how they did it.
David
More information about the cfe-dev
mailing list