dmd/compiler/test/compilable/posixbitfields.c

159 lines
3.2 KiB
C

// DISABLED: win32 win64
// https://issues.dlang.org/show_bug.cgi?id=23427
_Static_assert(sizeof(unsigned) == 4, "1");
struct A {
unsigned x :8;
unsigned y :4;
unsigned z :20;
};
_Static_assert(sizeof(struct A)==4, "2");
struct B {
unsigned x :4;
unsigned y :2;
unsigned z :26;
};
_Static_assert(sizeof(struct B)==4, "3");
struct C {
unsigned x :4;
unsigned y :4;
unsigned z :24;
};
_Static_assert(sizeof(struct C)==4, "4"); // This one fails
_Static_assert(sizeof(struct {
unsigned a: 1;
unsigned b: 7;
unsigned c: 24;
}) == sizeof(unsigned), "1 7 24");
_Static_assert(sizeof(struct {
unsigned a: 2;
unsigned b: 6;
unsigned c: 24;
}) == sizeof(unsigned), "2 6 24");
_Static_assert(sizeof(struct {
unsigned a: 3;
unsigned b: 5;
unsigned c: 24;
}) == sizeof(unsigned), "3 5 24");
_Static_assert(sizeof(struct {
unsigned a: 4;
unsigned b: 4;
unsigned c: 24;
}) == sizeof(unsigned), "4 4 24");
_Static_assert(sizeof(struct {
unsigned a: 5;
unsigned b: 3;
unsigned c: 24;
}) == sizeof(unsigned), "5 3 24");
_Static_assert(sizeof(struct {
unsigned a: 6;
unsigned b: 2;
unsigned c: 24;
}) == sizeof(unsigned), "6 2 24");
_Static_assert(sizeof(struct {
unsigned a: 7;
unsigned b: 1;
unsigned c: 24;
}) == sizeof(unsigned), "7 1 24");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 9;
unsigned c: 15;
}) == sizeof(unsigned), "8 9 15");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 10;
unsigned c: 14;
}) == sizeof(unsigned), "8 10 14");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 11;
unsigned c: 13;
}) == sizeof(unsigned), "8 11 13");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 12;
unsigned c: 12;
}) == sizeof(unsigned), "8 12 12");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 13;
unsigned c: 11;
}) == sizeof(unsigned), "8 13 11");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 14;
unsigned c: 10;
}) == sizeof(unsigned), "8 14 10");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 15;
unsigned c: 9;
}) == sizeof(unsigned), "8 15 9");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 16;
unsigned c: 8;
}) == sizeof(unsigned), "8 16 8");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 17;
unsigned c: 7;
}) == sizeof(unsigned), "8 17 7");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 18;
unsigned c: 6;
}) == sizeof(unsigned), "8 18 6");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 19;
unsigned c: 5;
}) == sizeof(unsigned), "8 19 5");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 20;
unsigned c: 4;
}) == sizeof(unsigned), "8 20 4");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 21;
unsigned c: 3;
}) == sizeof(unsigned), "8 21 3");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 22;
unsigned c: 2;
}) == sizeof(unsigned), "8 22 2");
_Static_assert(sizeof(struct {
unsigned a: 8;
unsigned b: 23;
unsigned c: 1;
}) == sizeof(unsigned), "8 23 1");