https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117354
--- Comment #4 from Sam James <sjames at gcc dot gnu.org> --- _BitInt(512) x; void baz (void *p) { __builtin_memcpy (p, &x, sizeof x); } _BitInt(512) qux (void *p) { _BitInt(512) y = x + 1; __builtin_memcpy (p, &y, sizeof y); return x; } int main() { void *ptr = &x; baz(&x); __builtin_printf("New value of x after call to baz(): %llu\n", *(_BitInt(512) *) ptr); _BitInt(512) z = qux(&x); }