OSDN Git Service

PR target/50762
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Nov 2011 14:56:00 +0000 (14:56 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Nov 2011 14:56:00 +0000 (14:56 +0000)
* config/i386/constraints.md (j): New address constraint.
* config/i386/predicates.md (lea_address_operand): Redefine as
special predicate.
* config/i386/i386.md (*lea_3_zext): Use "j" constraint for operand 1.
(*lea_4_zext): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181285 138bc75d-0d04-0410-961f-82ee72b054a4

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

index cf4e66b..4e1d96d 100644 (file)
@@ -1,3 +1,12 @@
+2011-11-11  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/50762
+       * config/i386/constraints.md (j): New address constraint.
+       * config/i386/predicates.md (lea_address_operand): Redefine as
+       special predicate.
+       * config/i386/i386.md (*lea_3_zext): Use "j" constraint for operand 1.
+       (*lea_4_zext): Ditto.
+
 2011-11-11  David S. Miller  <davem@davemloft.net>
 
        Revert
        * tree-sra.c (build_accesses_from_assign): Ignore clobbers.
        * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Clobbers of
        SSA names aren't necessary.
-       (propagate_necessity): Accept and ignore constructors on the rhs,
-       tidy.
+       (propagate_necessity): Accept and ignore constructors on the rhs, tidy.
        * gimple.c (walk_gimple_op): Accept constructors like mem_rhs.
        * tree-ssa-structalias.c (find_func_aliases): Clobbers don't store
        any known value.
        * trans-mem.c: New file.
        * trans-mem.h: New file.
 
-       * opts.c (finish_options): Error out when using -flto and
-       -fgnu-tm.
+       * opts.c (finish_options): Error out when using -flto and -fgnu-tm.
 
        * config/i386/i386.c: Define TARGET_VECTORIZE* transactional variants.
        (ix86_handle_tm_regparm_attribute, struct bdesc_tm,
 2011-11-07  H.J. Lu  <hongjiu.lu@intel.com>
 
        * dwarf2cfi.c (dwarf2out_frame_debug_expr): Check
-       HARD_FRAME_POINTER_REGNUM instead of hard_frame_pointer_rtx
-       in Rule 18.
+       HARD_FRAME_POINTER_REGNUM instead of hard_frame_pointer_rtx in Rule 18.
 
 2011-11-07  Jakub Jelinek  <jakub@redhat.com>
 
        * tree-data-ref.h (initialize_data_dependence_relation,
        compute_self_dependence): New prototypes.
        * tree-vect-data-refs.c (vect_check_gather): New function.
-       (vect_analyze_data_refs): Detect possible gather load data
-       refs.
+       (vect_analyze_data_refs): Detect possible gather load data refs.
        * tree-vectorizer.h (struct _stmt_vec_info): Add gather_p field.
        (STMT_VINFO_GATHER_P): Define.
        (vect_check_gather): New prototype.
        (avx2_gathersi<mode>, *avx2_gathersi<mode>): Use <VEC_GATHER_IDXSI>
        instead of <VEC_GATHER_MODE>.
        (avx2_gatherdi<mode>): Use <VEC_GATHER_IDXDI> instead of
-       <<AVXMODE48P_DI> and <VEC_GATHER_SRCDI> instead of VEC_GATHER_MODE
+       <AVXMODE48P_DI> and <VEC_GATHER_SRCDI> instead of VEC_GATHER_MODE
        on src and mask operands.
        (*avx2_gatherdi<mode>): Likewise.  Use VEC_GATHER_MODE iterator
        instead of AVXMODE48P_DI.
 
 2011-11-07  Uros Bizjak  <ubizjak@gmail.com>
 
-       * config/i386/f16cintrin: Remove extra _X86INTRIN_H_INCLUDED check.
+       * config/i386/f16cintrin.h: Remove extra _X86INTRIN_H_INCLUDED check.
 
 2011-11-07  Tristan Gingold  <gingold@adacore.com>
 
 
 2011-11-6  Richard Guenther  <rguenther@suse.de>
 
-       * ipa-prop.c (ipa_modify_call_arguments): Re-compute
-       inlinable flag.
+       * ipa-prop.c (ipa_modify_call_arguments): Re-compute inlinable flag.
 
 2011-11-06  Ira Rosen  <ira.rosen@linaro.org>
 
index bef5b30..941f48a 100644 (file)
@@ -19,7 +19,7 @@
 
 ;;; Unused letters:
 ;;;     B     H           T  W
-;;;           h jk          v
+;;;           h  k          v
 
 ;; Integer register constraints.
 ;; It is not necessary to define 'r' here.
   (and (not (match_test "TARGET_X32"))
        (match_operand 0 "memory_operand")))
 
+(define_address_constraint "j"
+  "@internal Address operand that can be zero extended in LEA instruction."
+  (and (not (match_code "const_int"))
+       (match_operand 0 "address_operand")))
+
 ;; Integer constant constraints.
 (define_constraint "I"
   "Integer constant in the range 0 @dots{} 31, for 32-bit shifts."
index 35273d9..377c78e 100644 (file)
 (define_insn "*lea_3_zext"
   [(set (match_operand:DI 0 "register_operand" "=r")
        (zero_extend:DI
-         (subreg:SI (match_operand:DI 1 "lea_address_operand" "p") 0)))]
+         (subreg:SI (match_operand:DI 1 "lea_address_operand" "j") 0)))]
   "TARGET_64BIT"
   "lea{l}\t{%a1, %k0|%k0, %a1}"
   [(set_attr "type" "lea")
 (define_insn "*lea_4_zext"
   [(set (match_operand:DI 0 "register_operand" "=r")
        (zero_extend:DI
-         (match_operand:SI 1 "lea_address_operand" "p")))]
+         (match_operand:SI 1 "lea_address_operand" "j")))]
   "TARGET_64BIT"
   "lea{l}\t{%a1, %k0|%k0, %a1}"
   [(set_attr "type" "lea")
index 3745b49..1dda585 100644 (file)
        (match_operand 0 "const0_operand")))
 
 ;; Return true if op if a valid address for LEA, and does not contain
-;; a segment override.
-(define_predicate "lea_address_operand"
+;; a segment override.  Defined as a special predicate to allow
+;; mode-less const_int operands pass to address_operand.
+(define_special_predicate "lea_address_operand"
   (match_operand 0 "address_operand")
 {
   struct ix86_address parts;