https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91285
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Isn't it better to do: # define ENCLOSING_OBJECT(TYPE, MEMBER, OBJECT)\ ((void)sizeof (&((TYPE *) 0)->MEMBER - OBJECT),\ (TYPE *) ((char *) OBJECT - offsetof (TYPE, MEMBER))) Instead?