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?

Reply via email to