[M3devel] DECL_LANG_SPECIFIC and casts?

Tony Hosking hosking at cs.purdue.edu
Wed May 26 22:13:29 CEST 2010


Why would this be problematic?  We need to retain it for later use, and I remember making sure that this worked.  Does the collector somehow delete the target?

On 26 May 2010, at 10:20, Jay K wrote:

> 
> Tony, this thing where we do:
> 
>   DECL_LANG_SPECIFIC(f) = (lang_decl_t*)var; /* we will fix the offset later once we have rtl */
> ...
> 
>       tree var = (tree)DECL_LANG_SPECIFIC(index);
> 
> 
> Is this running afoul of the gcc garbage collector?
>   Seems likely.
> 
> And does it matter?
>   Seems very uncertain. I know almost nothing here, but it looks like we do hold on to the thing until the end anyway,
>  assuming m3_write_globals is called near the end.
> 
> 
> Thing is:
> struct lang_identifier GTY(()) ...
> union lang_tree_node GTY((desc ("TREE_CODE (&%h.generic) == IDENTIFIER_NODE"))) ...
> struct lang_type GTY(()) ...
> typedef struct lang_decl GTY(()) ...
> struct language_function GTY(()) ...
> 
> 
> Which are nearly unused, cause me grief.
> They have to be different for 4.5 vs. 4.2/4.3.
>   Just the GTY needs to be moved to before the union/struct tag.
> 
> 
> I'd like to keep the code compatible with 4.2 at least until a separate upgrade of the iPhone backend.
>   I haven't checked what Apple is up to there though. Could also make sense to merge their changes..but there's generally
>    aren't so small like ours so I'd rather not.
> 
> 
>  - Jay
> 		 	   		  




More information about the M3devel mailing list