diff options
author | Michael Forney <mforney@mforney.org> | 2019-06-04 00:01:40 -0700 |
---|---|---|
committer | Michael Forney <mforney@mforney.org> | 2019-06-04 00:01:40 -0700 |
commit | f0465801c10359224330c81bcdd857584e07634a (patch) | |
tree | 4b75748f16c7ba6a6e803dbb2e491d20c2676204 | |
parent | 1461f251570cb768122fc7ab2040b1d32366651e (diff) |
Fix non-adjacent bit-fields
-rw-r--r-- | decl.c | 1 | ||||
-rw-r--r-- | test/bitfield-non-adjacent.c | 3 | ||||
-rw-r--r-- | test/bitfield-non-adjacent.qbe | 1 |
3 files changed, 5 insertions, 0 deletions
@@ -709,6 +709,7 @@ addmember(struct structbuilder *b, struct qualtype mt, char *name, int align, ui if (t->size < mt.type->size) t->size = mt.type->size; } + b->bits = 0; } else { /* bit-field */ if (!(mt.type->prop & PROPINT)) error(&tok.loc, "bit-field has invalid type"); diff --git a/test/bitfield-non-adjacent.c b/test/bitfield-non-adjacent.c new file mode 100644 index 0000000..ea5233b --- /dev/null +++ b/test/bitfield-non-adjacent.c @@ -0,0 +1,3 @@ +struct { + int x : 1, y, z : 1; +} s = {.z = 1}; diff --git a/test/bitfield-non-adjacent.qbe b/test/bitfield-non-adjacent.qbe new file mode 100644 index 0000000..e216054 --- /dev/null +++ b/test/bitfield-non-adjacent.qbe @@ -0,0 +1 @@ +export data $s = align 4 { z 8, b 1, z 3 } |