aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--decl.c1
-rw-r--r--test/bitfield-non-adjacent.c3
-rw-r--r--test/bitfield-non-adjacent.qbe1
3 files changed, 5 insertions, 0 deletions
diff --git a/decl.c b/decl.c
index f404d71..050bf05 100644
--- a/decl.c
+++ b/decl.c
@@ -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 }