> It is to improve performance of string functions on larger chunks of > data. x86-64 specify this, for x86 it is optional. I don't think we > should end up warning here - it is done only for static variables where > the alignment can be higher than what BIGGEST_ALIGNMENT promise.
Higher than BIGGEST_ALIGNMENT? So, maybe we should rename it ALMOST_BIGGEST_ALIGNMENT? I'm confused. The alignment warning came from varasm.c align_variable(): /* Some object file formats have a maximum alignment which they support. In particular, a.out format supports a maximum alignment of 4. */ if (align > MAX_OFILE_ALIGNMENT) { warning (0, "alignment of %q+D (%d) is greater than maximum object " "file alignment. Using %d", decl, align / BITS_PER_UNIT, MAX_OFILE_ALIGNMENT/BITS_PER_UNIT); align = MAX_OFILE_ALIGNMENT; } In the failing case, MAX_OFILE_ALIGNMENT is 128 (it defaults to BIGGEST_ALIGNMENT). Failing code looks like this: unsigned short __dj_ctype_flags[] = { 0, /* CTRL+?, 0xffff */ __dj_ISCNTRL, /* CTRL+@, 0x00 */ . . . };