[Bug tree-optimization/69990] decl alignment not respected
amodra at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Feb 28 23:10:00 GMT 2016
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.
More information about the Gcc-bugs
mailing list