(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
bf-ms-layout-5.c
       1  /* PR target/52991 */
       2  /* { dg-do run { target i?86-*-* x86_64-*-* } } */
       3  
       4  struct S {
       5    int a : 2;
       6    __attribute__((aligned (8))) int b : 2;
       7    int c : 28;
       8    __attribute__((aligned (16))) int d : 2;
       9    int e : 30;
      10  } __attribute__((ms_struct));
      11  
      12  struct S s;
      13  
      14  int
      15  main ()
      16  {
      17    int i;
      18    if (sizeof (s) != 32)
      19      __builtin_abort ();
      20    s.a = -1;
      21    for (i = 0; i < 32; ++i)
      22      if (((char *) &s)[i] != (i ? 0 : 3))
      23        __builtin_abort ();
      24    s.a = 0;
      25    s.b = -1;
      26    for (i = 0; i < 32; ++i)
      27      if (((char *) &s)[i] != (i ? 0 : 12))
      28        __builtin_abort ();
      29    s.b = 0;
      30    s.c = -1;
      31    for (i = 0; i < 32; ++i)
      32      if (((signed char *) &s)[i] != (i > 3 ? 0 : (i ? -1 : -16)))
      33        __builtin_abort ();
      34    s.c = 0;
      35    s.d = -1;
      36    for (i = 0; i < 32; ++i)
      37      if (((signed char *) &s)[i] != (i == 16 ? 3 : 0))
      38        __builtin_abort ();
      39    s.d = 0;
      40    s.e = -1;
      41    for (i = 0; i < 32; ++i)
      42      if (((signed char *) &s)[i] != ((i < 16 || i > 19) ? 0 : (i == 16 ? -4 : -1)))
      43        __builtin_abort ();
      44    return 0;
      45  }