On Mon, Sep 2, 2013 at 1:43 PM, Jan Hubicka <hubi...@ucw.cz> wrote: >> > + tree a; >> > + >> > + if (in_lto_p) >> > + cgraph_get_body (node); >> >> That looks gross. It cannot possibly be the correct fix for this. > DECL_ARGUMENTS/DECL_RESULT are now part of function body.
Well, there is still fallout from this change so I'm not convinced this will stay this way. Also we stream the function-decl that refers to these fields in the global section which means we have a layering violation. Which means DECL_ARGUMENTS and DECL_RESULT should be moved to struct function? Of course frontends may not be happy with that (given DECL_ARGUMENTS is also used in function declarations) Please consider reverting these changes (at least the DECL_ARGUMENTS one). > cgraph_get_body is > there to load it for you when you need it. We are going to expand the function > so it makes sense to get it. Then all DECL_ARGUMENTS/DECL_RESULT users need to be audited, no? Richard. > The same is done by the passmanager when function is going to be expanded. > Only > difference here is that thunks do not go through the passmanager. > > I can drop in_lto_p (the function does nothing when body is already there) > > Honza