https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110611
Alexander Monakov <amonakov at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amonakov at gcc dot gnu.org --- Comment #5 from Alexander Monakov <amonakov at gcc dot gnu.org> --- You cannot use this internal macro to deduce how your C testcase should behave. The language standard says this conversion has implementation-defined behavior, and GCC manual (the user manual, not the internals manual) has a chapter on implementation-defined behavior, which explicitly says: https://gcc.gnu.org/onlinedocs/gcc/Arrays-and-pointers-implementation.html A cast from pointer to integer [...] sign-extends if the pointer representation is smaller than the integer type [...]. So the behavior is the same for all targets.