diff options
| author | Michael Matz <matz@suse.de> | 2017-05-08 19:58:31 +0200 |
|---|---|---|
| committer | Michael Matz <matz@suse.de> | 2017-05-08 19:58:31 +0200 |
| commit | 377e8e5e68c52fe05bb33d87b4e29a7dd0db5f71 (patch) | |
| tree | 76abc190e08c34c023f79a7d3f37b15268d3290e | |
| parent | 1094891e67359058eb1c86a14d14ce24e233723a (diff) | |
| download | tinycc-377e8e5e68c52fe05bb33d87b4e29a7dd0db5f71.tar.gz tinycc-377e8e5e68c52fe05bb33d87b4e29a7dd0db5f71.tar.bz2 | |
bitfields: fix long bitfields
now the testcase works on i386-linux as well.
| -rw-r--r-- | tccgen.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -3362,9 +3362,9 @@ static void struct_layout(CType *type, AttributeDef *ad) (ofs2 / (typealign * 8)) > (size/typealign))) { c = (c + ((bit_pos + 7) >> 3) + typealign - 1) & -typealign; bit_pos = 0; - } else while (bit_pos + bit_size > size * 8) { - c += size; - bit_pos -= size * 8; + } else if (bit_pos + bit_size > size * 8) { + c += bit_pos >> 3; + bit_pos &= 7; } offset = c; /* In PCC layout named bit-fields influence the alignment |
