On Mon, Jul 18, 2011 at 1:05 PM, Uros Bizjak <ubiz...@gmail.com> wrote: > 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... >
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. -- H.J.