https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117256
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- B b1 (42, -42); __builtin_memcpy (buf, &b1, sizeof (b1)); if (buf[1]) __builtin_abort (); unsigned char m2 alignas (B) [sizeof (B)]; B *b2 = new (m2) B (1, 2); __builtin_memcpy (buf, b2, sizeof (*b2)); if (buf[1]) __builtin_abort (); I think the testcase in the comment 3 patch assumes padding between the members of struct A, but I don't think that's true for cris-elf where alignof(int) == 1. Maybe something like: struct alignas(4) Int { int i; }; struct A { char c; Int i; }; And then adjust the B constructor to set a.i.i = y This assumes that changing the definition of A this way wouldn't alter the behaviour being tested, but I think that's safe.