mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 15:00:55 +08:00
re PR target/50762 (ICE: in extract_insn, at recog.c:2137 (unrecognizable insn))
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. From-SVN: r181285
This commit is contained in:
parent
3fec7f1028
commit
5da6a3837f
@ -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
|
||||
@ -361,8 +370,7 @@
|
||||
* 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.
|
||||
@ -424,8 +432,7 @@
|
||||
* 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,
|
||||
@ -767,8 +774,7 @@
|
||||
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>
|
||||
|
||||
@ -801,8 +807,7 @@
|
||||
* 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.
|
||||
@ -815,7 +820,7 @@
|
||||
(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.
|
||||
@ -831,7 +836,7 @@
|
||||
|
||||
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>
|
||||
|
||||
@ -1104,8 +1109,7 @@
|
||||
|
||||
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>
|
||||
|
||||
|
@ -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.
|
||||
@ -127,6 +127,11 @@
|
||||
(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."
|
||||
|
@ -5551,7 +5551,7 @@
|
||||
(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")
|
||||
@ -5560,7 +5560,7 @@
|
||||
(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")
|
||||
|
@ -808,8 +808,9 @@
|
||||
(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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user