------- Comment #42 from matz at suse dot de 2006-01-23 11:28 ------- Created an attachment (id=10711) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10711&action=view) Testprogram
This program generates the following output for 3.3-hammer-branch on x86-64: S_normal_i size 8 align 4 ofs 4 S_pragma_i size 8 align 1 ofs 4 S_packed_i size 12 align 1 ofs 8 S_pragma_packed_i size 12 align 1 ofs 8 S_normal_ll size 16 align 8 ofs 8 S_pragma_ll size 16 align 1 ofs 8 S_packed_ll size 16 align 1 ofs 8 S_pragma_packed_ll size 16 align 1 ofs 8 With -m32 it's: S_normal_i size 8 align 4 ofs 4 S_pragma_i size 8 align 1 ofs 4 S_packed_i size 8 align 1 ofs 4 S_pragma_packed_i size 8 align 1 ofs 4 S_normal_ll size 16 align 4 ofs 8 S_pragma_ll size 16 align 1 ofs 8 S_packed_ll size 12 align 1 ofs 4 S_pragma_packed_ll size 12 align 1 ofs 4 Note how 3.3 handled packed structs (in difference to those under #pragma) really strange. With 4.1 plus patch on x86-64: S_normal_i size 8 align 4 ofs 4 S_pragma_i size 8 align 1 ofs 4 S_packed_i size 8 align 1 ofs 4 S_pragma_packed_i size 8 align 1 ofs 4 S_normal_ll size 16 align 8 ofs 8 S_pragma_ll size 16 align 1 ofs 8 S_packed_ll size 16 align 1 ofs 8 S_pragma_packed_ll size 16 align 1 ofs 8 With -m32: S_normal_i size 8 align 4 ofs 4 S_pragma_i size 8 align 1 ofs 4 S_packed_i size 8 align 1 ofs 4 S_pragma_packed_i size 8 align 1 ofs 4 S_normal_ll size 12 align 4 ofs 4 S_pragma_ll size 12 align 1 ofs 4 S_packed_ll size 12 align 1 ofs 4 S_pragma_packed_ll size 12 align 1 ofs 4 So, it's at least consistent, and maybe even senseful -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22275