generalized lvalues

Matt Austern austern@apple.com
Thu Nov 18 23:37:00 GMT 2004


On Nov 18, 2004, at 3:28 PM, Ziemowit Laski wrote:

> Since objPtr is a plain-vanilla 'void *', it is not in general subject 
> to the new NeXT runtime GC regime.  However, if we happen to assign a 
> pointer to an ObjC instance to it, then we do want to give a hint to 
> the compiler that objPtr _should_ be tracked by GC.  The most 
> straighforward -- and intuitive -- way of doing this is precisely via 
> a cast applied to the lvalue, as seen above (with '__strong' expanding 
> to an appropriate attribute).  While we have investigated some 
> syntactic alternatives to the cast in light of the impending lvalue 
> cast removal, all of them are counterintuitive in that they fail to 
> express what is being done -- namely, altering the type of a variable 
> for a particular assignment.

Just a reminder: the word "impending" isn't quite right.  It's not that 
cast-as-lvalue isn't going away, but that it's already gone.  It won't 
come back unless someone does the work to put it back, including 
documentation, testing, and integration with the 4.0 back end.

Yes, if we discover that removing it caused major problems then we 
might be forced to consider doing that work.  But we'd better be aware 
that at this point you aren't proposing that we avoid doing something, 
you're proposing a project to add functionality that isn't here.

			--Matt



More information about the Gcc mailing list