aboutsummaryrefslogtreecommitdiffstats
path: root/test/regression/bitfields9.c
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2015-07-08 10:16:53 +0200
committerXavier Leroy <xavier.leroy@inria.fr>2015-07-08 10:16:53 +0200
commit2b1c0aa69adafac185dd6c4e460d83517bcc8884 (patch)
tree00efb84c95bb3c75286dc0085e9c38b6cf5a25be /test/regression/bitfields9.c
parent24a08b236f6334f5c01e423fb564892e070b4bff (diff)
downloadcompcert-kvx-2b1c0aa69adafac185dd6c4e460d83517bcc8884.tar.gz
compcert-kvx-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.c14
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;
}