diff options
-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 } |