Jan Hubicka <hubi...@ucw.cz> writes:
>> Jan Hubicka <hubi...@ucw.cz> writes:
>> >> Richard Sandiford wrote the original section anchors implementation,
>> >> so he would be a good person to comment about the interaction between
>> >> aliases and section anchors.
>> >
>> > Thanks! Richard, does this patch seem sane?
>> 
>> Looks good to me in principle, but with:
>> 
>> > +      struct symtab_node *snode;
>> >        decl = SYMBOL_REF_DECL (symbol);
>> > +
>> > +      snode = symtab_node (decl);
>> > +      if (snode->alias)
>> > +       {
>> > + rtx target = DECL_RTL (symtab_alias_ultimate_target
>> > (snode)->decl);
>> > + SYMBOL_REF_BLOCK_OFFSET (symbol) = SYMBOL_REF_BLOCK_OFFSET
>> > (target);
>> > +         return;
>> > +       }
>> 
>> is SYMBOL_REF_BLOCK_OFFSET (target) guaranteed to be valid at this point?
>> It looked at face value like you'd need a recursive call to 
>> place_block_symbol
>> on the target before the copy.
>
> My reading was that SYMBOL_REF_BLOCK_OFFSET is computed at DECL_RTL
> calculation time. But you are right - it is done by validize_mem that
> is not done by DECL_RTL.  Shall I just call it on target first?

Yeah, sounds like calling place_block_symbol would be safer.

IIRC, the reason I didn't do it at SET_DECL_RTL time is that some frontends
tended to create placeholder decls that for whatever reason ended up with
an initial DECL_RTL, then changed the properties of the decl later once
more information was known.  (This was all many years ago.)

Thanks,
Richard

Reply via email to