/* PR c/51628. */ /* { dg-do run { target int128 } } */ /* { dg-options "-O2" } */ struct pair_t { char c; __int128_t i; } __attribute__ ((packed)); typedef struct unaligned_int128_t_ { __int128_t value; } __attribute__((packed, may_alias)) unaligned_int128_t; struct pair_t p = {0, 1}; unaligned_int128_t *addr = (unaligned_int128_t *) &p.i; int main() { addr->value = ~(__int128_t)0; return (p.i != 1) ? 0 : 1; }