Commit 7aecd4e8 by Uros Bizjak

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
parent 5019a14e
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> 2011-07-27 Kai Tietz <ktietz@redhat.com>
* config/i386/i386.c (ix86_option_override_internal): Allow -mabi * config/i386/i386.c (ix86_option_override_internal): Allow -mabi
...@@ -26,11 +33,9 @@ ...@@ -26,11 +33,9 @@
(optimize_bitfield_assignment_op): Add argument. (optimize_bitfield_assignment_op): Add argument.
Add argument to get_best_mode. Add argument to get_best_mode.
(get_bit_range): New. (get_bit_range): New.
(expand_assignment): Calculate maxbits and pass it down (expand_assignment): Calculate maxbits and pass it down accordingly.
accordingly.
(store_field): New argument. (store_field): New argument.
(expand_expr_real_2): New argument to store_field. (expand_expr_real_2): New argument to store_field. Include params.h.
Include params.h.
* expr.h (store_bit_field): New argument. * expr.h (store_bit_field): New argument.
* stor-layout.c (get_best_mode): Restrict mode expansion by taking * stor-layout.c (get_best_mode): Restrict mode expansion by taking
into account maxbits. into account maxbits.
...@@ -47,8 +52,7 @@ ...@@ -47,8 +52,7 @@
2011-07-27 Jakub Jelinek <jakub@redhat.com> 2011-07-27 Jakub Jelinek <jakub@redhat.com>
* dwarf2out.c (gen_producer_string): Ignore also -fverbose-asm * dwarf2out.c (gen_producer_string): Ignore also -fverbose-asm option.
option.
2011-07-27 Kai Tietz <ktietz@redhat.com> 2011-07-27 Kai Tietz <ktietz@redhat.com>
......
...@@ -15075,7 +15075,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[]) ...@@ -15075,7 +15075,7 @@ ix86_expand_move (enum machine_mode mode, rtx operands[])
{ {
if (MEM_P (op0)) if (MEM_P (op0))
op1 = force_reg (mode, op1); 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; rtx reg = can_create_pseudo_p () ? NULL_RTX : op0;
op1 = legitimize_pic_address (op1, reg); op1 = legitimize_pic_address (op1, reg);
...@@ -389,15 +389,10 @@ ...@@ -389,15 +389,10 @@
return symbolic_operand (op, mode); return symbolic_operand (op, mode);
}) })
;; Return true if OP is nonmemory operand acceptable by movabs patterns. ;; Return true if OP is nonmemory operand acceptable by movabs patterns.
(define_predicate "x86_64_movabs_operand" (define_predicate "x86_64_movabs_operand"
(if_then_else (not (and (match_test "TARGET_64BIT") (and (match_operand 0 "nonmemory_operand")
(match_test "flag_pic"))) (not (match_operand 0 "pic_32bit_operand"))))
(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")))))
;; Return true if OP is either a symbol reference or a sum of a symbol ;; Return true if OP is either a symbol reference or a sum of a symbol
;; reference and a constant. ;; reference and a constant.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment