diff options
author | Bernhard Schommer <bernhardschommer@gmail.com> | 2015-05-05 12:07:26 +0200 |
---|---|---|
committer | Bernhard Schommer <bernhardschommer@gmail.com> | 2015-05-05 12:07:26 +0200 |
commit | 684fd1a0989e6daa3bc20ddba925481a4f2182bf (patch) | |
tree | 1c6275fd1c4b8af029561aa362034078b8c2cbba /test/regression/bitfields9.c | |
parent | be6875023bc0b33701042cdf923cd9e07b4fb316 (diff) | |
parent | e9fa9cbdc761f8c033e9b702f7485982faed3f7d (diff) | |
download | compcert-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.c | 49 |
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; +} + |