/* { dg-do run } */ extern void abort (void); extern void exit (int); volatile unsigned long long x[2]; int main () { volatile char *addr = (volatile char *) &x[0]; x[0] = ~0ULL; x[1] = ~0ULL; __builtin_write64 (addr, 0x1122334455667788ULL); __builtin_write32 (addr + 8, 0x12345678); __builtin_write16 (addr + 12, 0xaabb); __builtin_write8 (addr + 14, 0xcc); if (x[0] != 0x1122334455667788ULL || x[1] != 0x12345678aabbccffULL || __builtin_read8 (addr) != 0x11 || __builtin_read16 (addr + 2) != 0x3344 || __builtin_read32 (addr + 4) != 0x55667788 || __builtin_read64 (addr + 8) != 0x12345678aabbccffULL) abort (); __builtin_write64 (addr, 0); __builtin_write32 (addr + 8, 0); __builtin_write16 (addr + 12, 0); __builtin_write8 (addr + 14, 0); if (x[0] != 0 || x[1] != 0xff) abort (); exit (0); }