From 7aecd4e895ec5d21a38a875d00b64c14030b830e Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Wed, 27 Jul 2011 18:16:42 +0200 Subject: [PATCH] predicates.md (x86_64_movabs_operand): Reject pic32_bit_operand operands. * 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 | 16 ++++++++++------ gcc/config/i386/i386.c | 2 +- gcc/config/i386/predicates.md | 9 ++------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 229473a0a4a..0c1508a613c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-07-27 Uros Bizjak + + * 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 * config/i386/i386.c (ix86_option_override_internal): Allow -mabi @@ -26,11 +33,9 @@ (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 - * 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 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 81c53cb37cc..1728219a2fc 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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); diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index 051551999c1..53988c2fb34 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -389,15 +389,10 @@ 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. -- 2.30.2