https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89502

--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> ---
rtx
memory_address_addr_space (machine_mode mode, rtx x, addr_space_t as)
{
  rtx oldx = x; 
  scalar_int_mode address_mode = targetm.addr_space.address_mode (as);

  x = convert_memory_address_addr_space (address_mode, x, as); 

  /* By passing constant addresses through registers
     we get a chance to cse them.  */
  if (! cse_not_expected && CONSTANT_P (x) && CONSTANT_ADDRESS_P (x)) 
    x = force_reg (address_mode, x);

cprop undoes it, which isn't enabled by O1.  For x86, using register
instead of a 32-bit constant usually is a performance loss.  Shouldn't
backend have a choice here?

Reply via email to