Hi,

For x32, movabs is only supported with register and constant operands.
OK for trunk?

Thanks.


H.J.
2011-07-26  H.J. Lu  <hongjiu...@intel.com>

        * config/i386/predicates.md (x86_64_movabs_operand): Don't allow 
        nonmemory_operand for TARGET_X32.

diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md
index 0515519..7dc690a 100644
--- a/gcc/config/i386/predicates.md
+++ b/gcc/config/i386/predicates.md
@@ -393,7 +398,8 @@
 ;; Return true if OP is nonmemory operand acceptable by movabs patterns.
 (define_predicate "x86_64_movabs_operand"
   (if_then_else (not (and (match_test "TARGET_64BIT")
-                         (match_test "flag_pic")))
+                         (ior (match_test "flag_pic")
+                              (match_test "TARGET_X32"))))
     (match_operand 0 "nonmemory_operand")
     (ior (match_operand 0 "register_operand")
         (and (match_operand 0 "const_double_operand")

Reply via email to