https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112830
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- @defmac POINTERS_EXTEND_UNSIGNED A C expression that determines how pointers should be extended from @code{ptr_mode} to either @code{Pmode} or @code{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. In the last case, the extension is done by the target's @code{ptr_extend} instruction. You need not define this macro if the @code{ptr_mode}, @code{Pmode} and @code{word_mode} are all the same width. @end defmac so you _need_ to define POINTERS_EXTEND_UNSIGNED given that obviously the modes are not the same. The other possibility is that the caller passes in the wrong modes for the address-space in question or it uses the wrong function - the function is for converting of ptr_mode <-> Pmode of the _same_ address-space, but guessing from the source we are converting from different address-spaces.