PATCH [6/n] X32: Supprot 32bit address
Uros Bizjak
ubizjak@gmail.com
Mon Jul 18 21:47:00 GMT 2011
On Mon, Jul 18, 2011 at 10:25 PM, H.J. Lu <hjl.tools@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...
>>
>
> Since TARGET_MEM_REF only works on ptr_mode, I don't think
> we can change template. We just need to accept TARGET_MEM_REF
> in ptr_mode and fix it up later.
No, a template is used to get some insight into the supported address
structure. If there is a mismatch, this approach fails, we can as well
give the compiler whatever fake template we want.
Uros.
More information about the Gcc-patches
mailing list