http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53016
--- Comment #7 from Mikael Pettersson <mikpe at it dot uu.se> 2012-04-17 17:27:20 UTC --- The problem is the fact that you attach explicit child_t/parent_t types to pointers not aligned accordingly. Casting those typed pointers to void* doesn't eliminate the implied alignment. Marking those types packed fixes the test case.