#include <stdio.h>
// PR269, PR285

// Test that static initializers for things with bitfields work.

struct S0 {
  unsigned int A:2;
  unsigned short B:3;
  unsigned C:24;
} s0 = { 2, 7, 123479 };

struct S1 {
  float F;
  int A : 31;
  int B : 1;
  long long C : 31;
} s1 = { 123.456f, 12 };

struct S2 {
  int A : 31;
  int B : 2;
  long long C : 31;
} s2 = { 123456, -1, 45123 };

struct S3 {
  int A;
  long long B : 31;
  int C : 4;
} s3 = { 4567812, -123, 2 };

struct S4 {
  short A;
  int B : 16;
} s4 = { 0x1234, 0x5678 };

struct S5 {
  short A;
  long long B : 48;
} s5 = { 0x1234, 0x56789ABCDE1LL};

struct S6 {
  int A : 31;
  int B : 1;
  long long C : 31;
  long long D : 2;
} s6 = { 1243, -1, 24112412, 3};

struct S7 {
  _Bool D : 8;
  _Bool D2 : 8;
  int D3 : 8;
  long long : 9;
  float B;
} s7 = { 1, 0, 123, 1.023f };

struct S8 {
  int A : 31;
  int B : 1;
  long long C : 31;
  long long D : 34;
  long long E : 2;
} s8 = { 123412312, 0, 1231231241, 12312312312LL, 1 };

struct S9 {
  int A : 31;
  int B : 2;
  long long C : 31;
} s9 = {12312412, 1, 123123124 };

struct S10 {
  _Bool D : 8;
  _Bool D2 : 8;
  int D3 : 15;
  long long : 9;
  int B;
} s10 = { 1, 0, 21321, 44444 };

struct S11 {
  _Bool D : 8;
  int : 0;
  int B;
} s11 = { 1, 3};

struct S12 {   // PR269
  unsigned long long A: 33;
  unsigned long long B: 40;
  unsigned long long C: 41;
} s12 = { 0x1FFFFFFFFULL, 0, 1000000 };

struct S13 {   // PR285
  unsigned A:1;
  char B[4096 +1];
  int C;
} s13 = { 1, "hello S13 world", 12314 };


int main() {
  printf("s0 = %d, %d, %d\n", s0.A, s0.B, s0.C);
  printf("s1 = %f, %d, %d, %d\n", s1.F, s1.A, s1.B, (int)s1.C);
  printf("s2 = %d, %d, %d\n", s2.A, s2.B, (int)s2.C);
  printf("s3 = %d, %d, %d\n", s3.A, (int)s3.B, s3.C);
  printf("s4 = %d, %d\n", s4.A, s4.B);
  printf("s5 = %d %lld\n", s5.A, s5.B);
  printf("s6 = %d, %d, %d, %d\n", s6.A, s6.B, (int)s6.C, (int)s6.D);
  printf("s7 = %d, %d, %d, %f\n", s7.D, s7.D2, (int)s7.D3, s7.B);
  printf("s8 = %d, %d, %d, %lld, %d\n", s8.A, s8.B, (int)s8.C, (long long)s8.D,
         s8.E);
  printf("s9 = %d, %d, %d\n", s9.A, s9.B, (int)s9.C);
  printf("s10 = %d, %d, %d, %d\n", s10.D, s10.D2, s10.D3, s10.B);
  printf("s11 = %d, %d\n", s11.D, s11.B);
  printf("s12 = %lld, %lld, %lld\n", (long long) s12.A, (long long) s12.B,
         (long long)s12.C);
  printf("s13 = %d, %s, %d\n", s13.A, s13.B, s13.C);
  return 0;
}
