https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115014
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> --- int f(int *a) { int b; size_t t = (size_t)&b; size_t t1 = (size_t)a; return *(int*)(((size_t)&b)+(t-t1)); } Is kinda of valid c but might fail with your definition.