diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-03-20 15:53:11 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-03-20 15:53:11 +0000 |
commit | f36306502108c35c574c3f2eb0b7b6d93a0a483e (patch) | |
tree | 9f3eddbcefac04263b8fd5caffb9fe5a164b548e /docs/keep_data_small.txt | |
parent | c86e052b81210e762f8ca6b79cb46b8c4bdfbfe0 (diff) |
small doc update
Diffstat (limited to 'docs/keep_data_small.txt')
-rw-r--r-- | docs/keep_data_small.txt | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/docs/keep_data_small.txt b/docs/keep_data_small.txt index 72de2d1ef..15e41aefd 100644 --- a/docs/keep_data_small.txt +++ b/docs/keep_data_small.txt @@ -163,14 +163,20 @@ ridiculously large values. asm output diff for above example: gcc doesn't seem to have options for altering this behaviour. -gcc 3.4.3: +gcc 3.4.3 and 4.1.1 tested: +char c = 1; // gcc aligns to 32 bytes if sizeof(struct) >= 32 -struct st { - int c_iflag,c_oflag,c_cflag,c_lflag; - int i1,i2,i3; // struct will be aligned to 4 bytes -// int i1,i2,i3,i4; // struct will be aligned to 32 bytes -}; -struct st t = { 1 }; +struct { + int a,b,c,d; + int i1,i2,i3; +} s28 = { 1 }; // struct will be aligned to 4 bytes +struct { + int a,b,c,d; + int i1,i2,i3,i4; +} s32 = { 1 }; // struct will be aligned to 32 bytes // same for arrays char vc31[31] = { 1 }; // unaligned char vc32[32] = { 1 }; // aligned to 32 bytes + +-fpack-struct=1 reduces alignment of s28 to 1 (but probably will break layout +of many libc structs) but s32 and vc32 are still aligned to 32 bytes. |