https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61296
Bug ID: 61296 Summary: Excessive alignment in ix86_data_alignment Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com Target: x86 ix86_data_alignment was introduced by https://gcc.gnu.org/ml/gcc-patches/2000-06/msg00871.html It aligns struct larger than 32 bytes to 32 bytes. This change https://gcc.gnu.org/ml/gcc-patches/2001-03/msg01356.html aligns struct/union/array bigger than 16 bytes to 16 bytes, which causes PR 56564 and leads to DATA_ABI_ALIGNMENT. When OPT is false, ix86_data_alignment may return alignment bigger than ABI required. It happens when the references is bound to the current definition. It improves the performance when data can be accessed with the biggest alignment. If data is aligned bigger than the biggest alignment, we may not get performance benefit while wasting alignment padding.