aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2011-07-27 18:16:42 +0200
committerUros Bizjak <uros@gcc.gnu.org>2011-07-27 18:16:42 +0200
commit7aecd4e895ec5d21a38a875d00b64c14030b830e (patch)
tree9940d58da30a5464e3c947c1e01acd1992ec7455
parent5019a14eee123f629c24747178e6ab3c22a5dbc9 (diff)
downloadgcc-7aecd4e895ec5d21a38a875d00b64c14030b830e.zip
gcc-7aecd4e895ec5d21a38a875d00b64c14030b830e.tar.gz
gcc-7aecd4e895ec5d21a38a875d00b64c14030b830e.tar.bz2
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
-rw-r--r--gcc/ChangeLog16
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/config/i386/predicates.md9
3 files changed, 13 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 229473a..0c1508a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
@@ -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 <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>
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 81c53cb..1728219 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 0515519..53988c2 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.