http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47727
--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> 2011-02-14 14:34:30 UTC --- (In reply to comment #6) > Not really. simplify-rtx should never emit new instuctions. Probably > Ulrich, when introducing address-spaces didn't properly think about > this in convert_memory_address_addr_space (). > I am not sure if that piece of code: #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) /* As we do not know which address space the pointer is refering to, we can do this only if the target does not support different pointer or address modes depending on the address space. */ if (target_default_pointer_address_modes_p () && POINTERS_EXTEND_UNSIGNED > 0 && mode == Pmode && GET_MODE (op) == ptr_mode && (CONSTANT_P (op) || (GET_CODE (op) == SUBREG && REG_P (SUBREG_REG (op)) && REG_POINTER (SUBREG_REG (op)) && GET_MODE (SUBREG_REG (op)) == Pmode))) return convert_memory_address (Pmode, op); #endif has ever worked before since convert_memory_address was there before Ulrich added address-spaces. For x32, convert_memory_address will generate new instructions when converting from SImode to DImode. Should we simply remove them?