diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/config/i386/predicates.md | 8 |
2 files changed, 13 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 630a8d0..7fdc1e5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,8 +1,12 @@ +2011-07-28 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/predicates.md (pic_32bit_opreand): Do not define as + special predicate. Remove explicit mode checks. + 2011-07-28 Jakub Jelinek <jakub@redhat.com> - * dwarf2out.c (resolve_addr): For -gdwarf-2 don't - optimize DW_AT_data_member_location containing just - DW_OP_plus_uconst. + * dwarf2out.c (resolve_addr): For -gdwarf-2 don't optimize + DW_AT_data_member_location containing just DW_OP_plus_uconst. PR debug/49871 * dwarf2out.c (size_of_die, value_format, output_die): Use @@ -38,7 +42,7 @@ * config/arm/vfp.md ("*movdf_vfp"): Handle the VFP constraints before the core constraints. Adjust attributes. - (*thumb2_movdf_vfp"): Likewise. + ("*thumb2_movdf_vfp"): Likewise. 2011-07-28 Kai Tietz <ktietz@redhat.com> @@ -178,8 +182,8 @@ 2011-07-27 Uros Bizjak <ubizjak@gmail.com> - * config/i386/predicates.md (x86_64_movabs_operand): Reject - pic32_bit_operand RTXes. + * config/i386/predicates.md (x86_64_movabs_operand): Return false + for pic_32bit_operand RTXes. * config/i386/i386.c (ix86_expand_move): Check x86_64_movabs_operand in DImode. diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index 53988c2..f7a08ff 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -366,15 +366,12 @@ ;; Return true when operand is PIC expression that can be computed by lea ;; operation. -(define_special_predicate "pic_32bit_operand" +(define_predicate "pic_32bit_operand" (match_code "const,symbol_ref,label_ref") { - if (GET_MODE (op) != SImode - && GET_MODE (op) != DImode) - return false; - if (!flag_pic) return false; + /* Rule out relocations that translate into 64bit constants. */ if (TARGET_64BIT && GET_CODE (op) == CONST) { @@ -386,6 +383,7 @@ || XINT (op, 1) == UNSPEC_GOT)) return false; } + return symbolic_operand (op, mode); }) |