On Mon, Jul 18, 2011 at 8:48 PM, H.J. Lu <hjl.to...@gmail.com> wrote:

>>> TARGET_MEM_REF only works on ptr_mode.   This patch allows 32bit address
>>> in x32 mode.  OK for trunk?
>>
>> Do you perhaps have a testcase to help in analyzing the problem?
>>
>
> See:
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49780

I don't think that tree-ssa-address/addr_for_mem_ref is correct when
REALLY_EXPAND is false. It constructs RTX "template" in pointer_mode,
which is not necessary valid and is rejected from
ix86_validate_address_p. When really expanding the expression, we have
a conversion at the end:

  gen_addr_rtx (pointer_mode, sym, bse, idx, st, off, &address, NULL, NULL);
  if (pointer_mode != address_mode)
    address = convert_memory_address (address_mode, address);
  return address;

This is in fact your r175912 change in the fix for PR47383 - you need
to do something with template as well...

Uros.

Reply via email to