https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110611
--- Comment #2 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to Iain Sandoe from comment #0) > the x86 backend sets: > gcc/config/i386/i386.h:#define POINTERS_EXTEND_UNSIGNED 1 > which ought, according to gccint mean that pointers get sign-extended... erm I mean zero-extended: POINTERS_EXTEND_UNSIGNED [Macro] A C expression that determines how pointers should be extended from ptr_mode to either Pmode or word_mode. It is greater than zero if pointers should be zero-extended, zero if they should be sign-extended, and negative if some other sort of conversion is needed.