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.