diff options
Diffstat (limited to 'test/regression')
-rw-r--r-- | test/regression/Results/bitfields9 | 10 | ||||
-rw-r--r-- | test/regression/bitfields9.c | 49 |
2 files changed, 59 insertions, 0 deletions
diff --git a/test/regression/Results/bitfields9 b/test/regression/Results/bitfields9 new file mode 100644 index 00000000..ca74f1f4 --- /dev/null +++ b/test/regression/Results/bitfields9 @@ -0,0 +1,10 @@ +glob_s = { a = -12, b = 1 } +glob_t = { c = 123, d = 0, e = -45 } +loc_s = { a = 11, b = 2 } +loc_t = { c = 11, d = 1, e = 2 } +compound_s = { a = 2, b = 3 } +compound_t = { c = 2, d = 0, e = -11 } +loc_s = { a = 7, b = 2 } +loc_t = { c = 7, d = 1, e = 50 } +compound_s = { a = -14, b = 3 } +compound_t = { c = 50, d = 0, e = -7 } 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; +} + |