/* Test volatile access to unaligned field.  */
/* { dg-do run } */
/* { dg-options "-fstrict-volatile-bitfields" } */

extern void abort (void);

#define test_type unsigned long long
#define MAGIC 0x102030405060708ull

typedef struct s{
 unsigned char Prefix;
 test_type Type;
}__attribute((__packed__)) ss;

volatile ss v;
ss g;

void __attribute__((noinline))
foo (test_type u)
{
  v.Type = u;
}

test_type __attribute__((noinline))
bar (void)
{
  return v.Type;
}

int main()
{
  test_type temp;
  foo(MAGIC);
  __builtin_memcpy(&g, (void *)&v, sizeof(g));
  if (g.Type != MAGIC)
    abort ();

  g.Type = MAGIC;
  __builtin_memcpy((void *)&v, &g, sizeof(v));
  temp = bar();
  if (temp != MAGIC)
    abort ();
  return 0;
}
