diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2015-07-08 10:16:53 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2015-07-08 10:16:53 +0200 |
commit | 2b1c0aa69adafac185dd6c4e460d83517bcc8884 (patch) | |
tree | 00efb84c95bb3c75286dc0085e9c38b6cf5a25be /test/regression/bitfields9.c | |
parent | 24a08b236f6334f5c01e423fb564892e070b4bff (diff) | |
download | compcert-2b1c0aa69adafac185dd6c4e460d83517bcc8884.tar.gz compcert-2b1c0aa69adafac185dd6c4e460d83517bcc8884.zip |
Fix issue with bit fields of type _Bool
cparser/Bitfields.ml: when assigning to a bit field of type _Bool, the
right-hand side must be normalized to 0 or 1 via a cast to _Bool.
test/regression/bitfields{1,9}.c: add corresponding test cases.
Diffstat (limited to 'test/regression/bitfields9.c')
-rw-r--r-- | test/regression/bitfields9.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/test/regression/bitfields9.c b/test/regression/bitfields9.c index b33c4064..be87057b 100644 --- a/test/regression/bitfields9.c +++ b/test/regression/bitfields9.c @@ -9,7 +9,7 @@ struct s { struct t { unsigned int c: 16; - unsigned int d: 1; + _Bool d: 1; short e: 8; }; @@ -25,25 +25,25 @@ void print_t(char * msg, struct t p) /* Global initialization */ struct s glob_s = { -12, 1 }; -struct t glob_t = { 123, 0, -45 }; +struct t glob_t = { 123, 2, -45 }; /* Local initialization */ -void f(int x, int y) +void f(int x, int y, int z) { struct s loc_s = { x, y }; - struct t loc_t = { x, 1, y }; + struct t loc_t = { x, z, 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 }); + print_t("compound_t", (struct t) { y, ~z, -x }); } int main() { print_s("glob_s", glob_s); print_t("glob_t", glob_t); - f(11, 2); - f(7, 50); + f(11, 2, 3); + f(7, 50, 2); return 0; } |