/* { dg-do run } */
/* { dg-options "-O" } */

struct T1 {
  unsigned int zn;
  unsigned char p;
  unsigned char qn;
  unsigned short a;
  unsigned int z;
} __attribute__((__packed__, __aligned__(4)));

struct T2 {
  unsigned int zn;
  unsigned char rn;
  unsigned char p;
  unsigned char qn;
  unsigned short a;
  unsigned int z;
} __attribute__((__packed__, __aligned__(4)));

#define vc (unsigned char)0xaa
#define vs (unsigned short)0xccdd
#define vi (unsigned int)0x12345678

struct T1 v1 = { -1, vc, 1, vs, vi };
struct T2 v2 = { -1, 0, vc, 1, vs, vi };

void f (void) {
  if (0
      || v1.p != v2.p
      || v1.a != v2.a
      || v1.z != v2.z
      )
    __builtin_abort ();
}

int main () {
  f ();
  return 0;
}