predicates.md (x86_64_movabs_operand): Reject pic32_bit_operand operands.
authorUros Bizjak <uros@gcc.gnu.org>
Wed, 27 Jul 2011 16:16:42 +0000 (18:16 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 27 Jul 2011 16:16:42 +0000 (18:16 +0200)
* config/i386/predicates.md (x86_64_movabs_operand): Reject
pic32_bit_operand operands.
* config/i386/i386.c (ix86_expand_move): Check x86_64_movabs_operand
in DImode.

From-SVN: r176833

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/predicates.md

index 229473a0a4ad15fdffc586e4fb537b77a5fd809a..0c1508a613c714f1b477a4bc9df6d68dee990077 100644 (file)
@@ -1,3 +1,10 @@
+2011-07-27  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/predicates.md (x86_64_movabs_operand): Reject
+       pic32_bit_operand operands.
+       * config/i386/i386.c (ix86_expand_move): Check x86_64_movabs_operand
+       in DImode.
+
 2011-07-27  Kai Tietz  <ktietz@redhat.com>
 
        * config/i386/i386.c (ix86_option_override_internal): Allow -mabi
        (optimize_bitfield_assignment_op): Add argument.
        Add argument to get_best_mode.
        (get_bit_range): New.
-       (expand_assignment): Calculate maxbits and pass it down
-       accordingly.
+       (expand_assignment): Calculate maxbits and pass it down accordingly.
        (store_field): New argument.
-       (expand_expr_real_2): New argument to store_field.
-       Include params.h.
+       (expand_expr_real_2): New argument to store_field.  Include params.h.
        * expr.h (store_bit_field): New argument.
        * stor-layout.c (get_best_mode): Restrict mode expansion by taking
        into account maxbits.
@@ -47,8 +52,7 @@
 
 2011-07-27  Jakub Jelinek  <jakub@redhat.com>
 
-       * dwarf2out.c (gen_producer_string): Ignore also -fverbose-asm
-       option.
+       * dwarf2out.c (gen_producer_string): Ignore also -fverbose-asm option.
 
 2011-07-27  Kai Tietz  <ktietz@redhat.com>
 
index 81c53cb37cc8de4e95d3f916d96f4135d7b2e8d9..1728219a2fca6b9785660f42a1a2ac53789b164e 100644 (file)
@@ -15075,7 +15075,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[])
        {
          if (MEM_P (op0))
            op1 = force_reg (mode, op1);
-         else if (!TARGET_64BIT || !x86_64_movabs_operand (op1, mode))
+         else if (!(TARGET_64BIT && x86_64_movabs_operand (op1, DImode)))
            {
              rtx reg = can_create_pseudo_p () ? NULL_RTX : op0;
              op1 = legitimize_pic_address (op1, reg);
index 051551999c18d20c3c268c666f846503698e5f01..53988c2fb34b2cd6d3cf8f1508b16d97fbc9a145 100644 (file)
   return symbolic_operand (op, mode);
 })
 
-
 ;; 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")))
-    (match_operand 0 "nonmemory_operand")
-    (ior (match_operand 0 "register_operand")
-        (and (match_operand 0 "const_double_operand")
-             (match_test "GET_MODE_SIZE (mode) <= 8")))))
+  (and (match_operand 0 "nonmemory_operand")
+       (not (match_operand 0 "pic_32bit_operand"))))
 
 ;; Return true if OP is either a symbol reference or a sum of a symbol
 ;; reference and a constant.