http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49860
--- Comment #5 from Uros Bizjak <ubizjak at gmail dot com> 2011-07-27 15:10:13
UTC ---
(In reply to comment #4)
> > Can you prevent x32 to generate DImode symbols? No, since 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.
>
> This testcase is about valid address for x86_64_immediate_operand
> and x86_64_zext_immediate_operand. If it is valid for TARGET_32BIT,
> it should be valid for TARGET_X32.
(define_predicate "x86_64_immediate_operand"
(match_code "const_int,symbol_ref,label_ref,const")
{
if (!TARGET_64BIT)
return immediate_operand (op, mode);
...
}
I guess the code above speaks for itself.
> Assembler is done on purpose to catch problems like this.
This is artificial limitation.