summaryrefslogtreecommitdiff
path: root/test/regression/bitfields1.c
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-03-03 10:22:27 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-03-03 10:22:27 +0000
commit891377ce1962cdb31357d6580d6546ec22df2b4f (patch)
tree4ff7c38749cc7a4c1af411c5aa3eb7225c4ae6a1 /test/regression/bitfields1.c
parent018edf2d81bf94197892cf1df221f7eeac1f96f6 (diff)
Switching to the new C parser/elaborator/simplifier
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1269 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'test/regression/bitfields1.c')
-rw-r--r--test/regression/bitfields1.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/regression/bitfields1.c b/test/regression/bitfields1.c
new file mode 100644
index 0000000..c6022dd
--- /dev/null
+++ b/test/regression/bitfields1.c
@@ -0,0 +1,39 @@
+#include <stdio.h>
+
+struct s {
+ signed char a: 6;
+ unsigned int b: 2;
+};
+
+struct t {
+ unsigned int c: 16;
+ unsigned int d: 1;
+ short e: 8;
+};
+
+int f(struct s * x, struct t * y, int z)
+{
+ x->a += x->b;
+ y->d = z;
+ return y->c + y->e;
+}
+
+int main()
+{
+ struct s x;
+ struct t y;
+ int res;
+
+ x.a = 56;
+ x.b = 2;
+ y.c = 12345;
+ y.d = 0;
+ y.e = 89;
+ res = f(&x, &y, 1);
+
+ printf("x = {a = %d, b = %d }\n", x.a, x.b);
+ printf("y = {c = %d, d = %d, e = %d }\n", y.c, y.d, y.e);
+ printf("f returns %d\n", res);
+
+ return 0;
+}