On Fri, Jul 15, 2011 at 5:49 AM, Uros Bizjak <ubiz...@gmail.com> wrote: > On Sun, Jul 10, 2011 at 12:20 AM, H.J. Lu <hongjiu...@intel.com> wrote: > >> TARGET_MEM_REF only works on ptr_mode. That means base and index parts >> of x86 address operand in x32 mode may be in ptr_mode. This patch >> supports 32bit base and index parts in x32 mode. OK for trunk? >> >> Thanks. >> >> >> H.J. >> --- >> 2011-07-09 H.J. Lu <hongjiu...@intel.com> >> >> * config/i386/i386.c (ix86_simplify_base_index_disp): New. >> (ix86_decompose_address): Support 32bit address in x32 mode. >> (ix86_legitimate_address_p): Likewise. >> (ix86_fixup_binary_operands): Likewise. > > Why don't you handle translations in TARGET_LEGITIMIZE_ADDRESS (or > maybe also LEGITIMIZE_RELOAD_ADDRESS) ? >
It is because ix86_decompose_address is also called from: predicates.md: ok = ix86_decompose_address (op, &parts); predicates.md: ok = ix86_decompose_address (op, &parts); predicates.md: ok = ix86_decompose_address (XEXP (op, 0), &parts); predicates.md: ok = ix86_decompose_address (XEXP (op, 0), &parts); predicates.md: ok = ix86_decompose_address (XEXP (op, 0), &parts); -- H.J.