https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117354
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Doesn't need -fsanitize=address, just ensuring the _BitInt(256) var is just 8-byte aligned is enough: struct S { unsigned char y; _BitInt(256) x; } s; __attribute__((noipa)) static void foo (const char *, _BitInt(256)) { } __attribute__((noipa)) static void bar(_BitInt(256)) { } static void baz (void *p) { foo ("x = %llu\n", s.x); __builtin_memcpy (p, &s.x, sizeof s.x); } int main () { void *ptr = &s.x; baz (&s.x); bar (*(_BitInt(256) *) ptr); }