http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56564
--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Maybe it was original DATA_ALIGNMENT purpose, but it certainly serves for both right now, which is wrong, we need one for ABI mandated stuff and one for optimization stuff beyond, where optimization alignment can be used if it can be proved that we'll bind to the optimized decl, but ABI has to be used otherwise. E.g. x86_64 ABI says that certain arrays are aligned that and that way, it is certainly something beyond what TYPE_ALIGN provides (changing TYPE_ALIGN of the arrays would affect layout of structures, but that is wrong).