http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-03-15 10:21:04 UTC --- Hm, e has alignment of 8 bytes and f of 4 but the assembler doesn't pad e's size to 8 byte multiples appearantly .data .align 8 .type e, @object .size e, 12 e: .byte 0 .byte 0 .byte 0 .byte 0 .value 0 .byte 0 .byte 0 .byte 1 .byte 0 .zero 2 .align 4 .type f, @object .size f, 4 f: .long 1 this is probably a more general problem also with the vectorizer which happily increases alignment of global variables independed on if their size is a multiple of that alignment. If the asm output machinery does not try to handle padding to multiples of alignment size then that's the bug I guess.