This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: gcc moving memory reference across call
Daniel Berlin wrote:
>> It's a field in the class$ structure. class$ is initialized by creating a
>> CONSTRUCTOR tree and calling CONSTRUCTOR_APPEND_ELT for each field. The
>> DECL_INITIAL of class$ points to the CONSTRUCTOR tree.
>>
>> _CD_pp is an array of void*. These are initialized by DECL_INITIAL too.
>>
>> InitClass is passed class$$ (not class$) and that has a DECL_INITIAL
>> that points to class$. As far as I can tell all the types are correct.
>>
>
> If class$$ has an initial of &class$ which has an initial (in it
> somewhere) of CD_ppp it should definitely be noticing.
> It used to walk these all and get it right, AFAIK, by disqualifying
> all variables with their addresses taken (or escaping the function
> unit).
> Maybe the walking broke when we moved to tuples or something?
Maybe. I'm going to write some equivalent code in C and see what
happens.
Andrew.