On Wed, Jul 27, 2011 at 3:09 PM, Uros Bizjak <ubiz...@gmail.com> wrote: > On Wed, Jul 27, 2011 at 3:00 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > >>> Pmode is still in DImode and DImode addresses are *valid* addresses. >>> For the testcase from PR, >>> expand generates SImode symbol that is later extended to DImode and >>> handled through movabs. >>> >>> Your patch just papers over this fact. Please see how >>> *movdi_internal_rex64 handles immediates. >>> >> >> For the testcase in: >> >> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49860 >> >> my goal is to make TARGET_X32 to generate code very similar to >> TARGET_32BIT, except for r8-r15. How can we achieve that? > > Unless you can prevent DImode symbols in ix86_legitimate_constant_p, we can't.
_Perhaps_ we can reject large offsets for X32 from ix86_legitimate_constant_p here: if (GET_CODE (x) == PLUS) { if (!CONST_INT_P (XEXP (x, 1))) return false; x = XEXP (x, 0); } (I didn't test this idea yet). Uros.