https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69990

Alan Modra <amodra at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2016-02-28
                 CC|                            |hubicka at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      |amodra at gmail dot com
     Ever confirmed|0                           |1

--- Comment #1 from Alan Modra <amodra at gmail dot com> ---
symtab_node::can_increase_alignment_p rejects an increase in alignment of "c"
with
  /* If target is already placed in an anchor, we can not touch its
     alignment.  */
  if (DECL_RTL_SET_P (target->decl)
      && MEM_P (DECL_RTL (target->decl))
      && SYMBOL_REF_HAS_BLOCK_INFO_P (XEXP (DECL_RTL (target->decl), 0)))
    return false;

"c" has decl rtl due to "c" appearing in the constructor for "f".
gimplify_init_constructor -> tree_output_constant_def ->...-> decode_addr_const
-> make_decl_rtl

No condition prevents "a" alignment from being increased.

Since aliases are created later, it seems that the alias between "a" and "c"
must be prevented as in the attached patch.

Reply via email to