From: uros Date: Fri, 9 Apr 2010 21:12:42 +0000 (+0000) Subject: PR target/43707 X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=5f88000620a8abba96ede92575ab72ab30076f07;hp=cb344b0bfe796d9c23e050d6dc79abca9352f9dc PR target/43707 PR target/43709 * config/i386/i386.md (*ashl3_doubleword): Split to insn and splitter pattern. Change splitter operand 1 predicate to nonmemory_operand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158177 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1c57d045fb1..74c2c327cf8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-04-09 Uros Bizjak + + PR target/43707 + PR target/43709 + * config/i386/i386.md (*ashl3_doubleword): Split to insn + and splitter pattern. Change splitter operand 1 predicate to + nonmemory_operand. + 2010-04-09 Martin Jambor * ipa-cp.c (ipcp_lats_are_equal): Return true also if the two @@ -6,7 +14,7 @@ * ipa-prop.c (ipa_print_node_jump_functions): Likewise. 2010-04-09 Eric Botcazou - Bernd Schmidt + Bernd Schmidt * loop-invariant.c (replace_uses): New static function. (move_invariant_reg): Use it to ensure we can replace the uses. @@ -37,8 +45,7 @@ 2010-04-09 Rainer Orth - * config/sparc/sol2-gld.h: Remove SPARC reference. - Rename ... + * config/sparc/sol2-gld.h: Remove SPARC reference. Rename ... * config/sol2-gld.h: ... here. * config.gcc (sparc*-*-solaris2*): Reflect this. (i[34567]86-*-solaris2*): Use it. @@ -80,15 +87,15 @@ 2010-04-09 Iain Sandoe PR bootstrap/43684 - * varasm.c (default_assemble_visibility): Wrap vars that are + * varasm.c (default_assemble_visibility): Wrap vars that are set, but unused, by targets without GAS. - * config/rs6000/rs6000.c: (paired_emit_vector_compare): + * config/rs6000/rs6000.c: (paired_emit_vector_compare): Remove set, but unused, vars. (rs6000_legitimize_tls_address): Likewise. (altivec_expand_dst_builtin): Likewise. * config/darwin.c (machopic_classify_symbol): Likewise. (machopic_indirection_name): Likewise. - + 2010-04-09 Uros Bizjak * config/i386/i386.md (DWI): New mode iterator. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index b53c01daddb..25daeff8325 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -9560,17 +9560,23 @@ "" "ix86_expand_binary_operator (ASHIFT, mode, operands); DONE;") -(define_insn_and_split "*ashl3_doubleword" +(define_insn "*ashl3_doubleword" [(set (match_operand:DWI 0 "register_operand" "=&r,r") (ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "n,0") (match_operand:QI 2 "nonmemory_operand" "c,c"))) (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (ASHIFT, mode, operands)" + "" "#" + [(set_attr "type" "multi")]) + +(define_split + [(set (match_operand:DWI 0 "register_operand" "") + (ashift:DWI (match_operand:DWI 1 "nonmemory_operand" "") + (match_operand:QI 2 "nonmemory_operand" ""))) + (clobber (reg:CC FLAGS_REG))] "(optimize && flag_peephole2) ? epilogue_completed : reload_completed" [(const_int 0)] - "ix86_split_ashl (operands, NULL_RTX, mode); DONE;" - [(set_attr "type" "multi")]) + "ix86_split_ashl (operands, NULL_RTX, mode); DONE;") ;; By default we don't ask for a scratch register, because when DWImode ;; values are manipulated, registers are already at a premium. But if