https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92634
--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Alan Modra from comment #7) > Here's another example, a typical offsetof. > > #define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) That can never be a correct offsetof as that can never be a constant integer expression in C or C++. That is one of the reasons why GCC created __builtin_offsetof (reading old history): https://gcc.gnu.org/ml/gcc-bugs/2003-06/msg00482.html :) I Know there has been discussion about &a->f not being a NULL pointer even but I cannot find it right now.