aboutsummaryrefslogtreecommitdiffstats
path: root/test/regression/bitfields9.c
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2015-05-05 12:07:26 +0200
committerBernhard Schommer <bernhardschommer@gmail.com>2015-05-05 12:07:26 +0200
commit684fd1a0989e6daa3bc20ddba925481a4f2182bf (patch)
tree1c6275fd1c4b8af029561aa362034078b8c2cbba /test/regression/bitfields9.c
parentbe6875023bc0b33701042cdf923cd9e07b4fb316 (diff)
parente9fa9cbdc761f8c033e9b702f7485982faed3f7d (diff)
downloadcompcert-684fd1a0989e6daa3bc20ddba925481a4f2182bf.tar.gz
compcert-684fd1a0989e6daa3bc20ddba925481a4f2182bf.zip
Merge branch 'master' into json_export
Diffstat (limited to 'test/regression/bitfields9.c')
-rw-r--r--test/regression/bitfields9.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/regression/bitfields9.c b/test/regression/bitfields9.c
new file mode 100644
index 00000000..b33c4064
--- /dev/null
+++ b/test/regression/bitfields9.c
@@ -0,0 +1,49 @@
+#include <stdio.h>
+
+/* Initialization of bit-fields */
+
+struct s {
+ signed char a: 6;
+ unsigned int b: 2;
+};
+
+struct t {
+ unsigned int c: 16;
+ unsigned int d: 1;
+ short e: 8;
+};
+
+void print_s(char * msg, struct s p)
+{
+ printf("%s = { a = %d, b = %d }\n", msg, p.a, p.b);
+}
+
+void print_t(char * msg, struct t p)
+{
+ printf("%s = { c = %d, d = %d, e = %d }\n", msg, p.c, p.d, p.e);
+}
+
+/* Global initialization */
+struct s glob_s = { -12, 1 };
+struct t glob_t = { 123, 0, -45 };
+
+/* Local initialization */
+void f(int x, int y)
+{
+ struct s loc_s = { x, y };
+ struct t loc_t = { x, 1, y };
+ print_s("loc_s", loc_s);
+ print_t("loc_t", loc_t);
+ print_s("compound_s", (struct s) { y, x });
+ print_t("compound_t", (struct t) { y, 0, -x });
+}
+
+int main()
+{
+ print_s("glob_s", glob_s);
+ print_t("glob_t", glob_t);
+ f(11, 2);
+ f(7, 50);
+ return 0;
+}
+