From 67755ff06f1dec8e888a9f8a08375edff3bccf9b Mon Sep 17 00:00:00 2001 From: uros Date: Sat, 11 Feb 2012 08:11:34 +0000 Subject: [PATCH] * compare-elim.c (find_comparisons_in_bb): Eliminate only compares having the same mode as previous compare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184124 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 43 ++++++++++++++++++++++--------------------- gcc/compare-elim.c | 5 ++++- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 391217a..f0056d8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-02-11 Uros Bizjak + + * compare-elim.c (find_comparisons_in_bb): Eliminate only compares + having the same mode as previous compare. + 2012-02-10 Eric Botcazou * config/sparc/sparc.c (sparc_flat_expand_prologue): Use emit_use. @@ -19,9 +24,9 @@ 2012-02-10 Richard Henderson - * tree-ssa-dce.c (propagate_necessity): Handle GIMPLE_TRANSACTION. - * tree-ssa-operands.c (parse_ssa_operands): Add virtual operands - for GIMPLE_TRANSACTION. Tidy if's into a switch. + * tree-ssa-dce.c (propagate_necessity): Handle GIMPLE_TRANSACTION. + * tree-ssa-operands.c (parse_ssa_operands): Add virtual operands + for GIMPLE_TRANSACTION. Tidy if's into a switch. 2012-02-10 Bill Schmidt Ira Rosen @@ -48,9 +53,8 @@ PR middle-end/52177 * builtins.c (fold_builtin_atomic_always_lock_free, expand_builtin_atomic_always_lock_free, - fold_builtin_atomic_is_lock_free, - expand_builtin_atomic_is_lock_free): Return and/or test - boolean_true_node/boolean_false_node instead of + fold_builtin_atomic_is_lock_free, expand_builtin_atomic_is_lock_free): + Return and/or test boolean_true_node/boolean_false_node instead of integer_one_node/integer_zero_node. 2012-02-10 Jan Hubicka @@ -90,8 +94,8 @@ 2012-02-08 Magnus Granberg PR driver/48524 - * gcc.c (switch_matches) Support switches with separated form, -D - and -U. + * gcc.c (switch_matches) Support switches with separated form, + -D and -U. 2012-02-08 Georg-Johann Lay @@ -113,8 +117,7 @@ PR tree-optimization/46886 * tree-flow.h (do_while_loop_p): Declare. * tree-ssa-loop-ch.c (do_while_loop_p): Export. - * tree-parloops.c (parallelize_loops): Only parallelize do-while - loops. + * tree-parloops.c (parallelize_loops): Only parallelize do-while loops. 2012-02-08 Andrew MacLeod @@ -183,7 +186,7 @@ newline in -alias dumps. 2012-02-07 Kai Tietz - Dave Korn + Dave Korn PR target/40068 * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): @@ -216,7 +219,8 @@ (epiphany_start_function): Handle multiple interrupt arguments and/or forwarder_section attribute. - * config/epiphany/epiphany.h (LIB_SPEC): Link libc again after libgloss. + * config/epiphany/epiphany.h (LIB_SPEC): Link libc again after + libgloss. 2012-02-07 Alan Modra @@ -297,13 +301,11 @@ to vect_is_simple_use_1 and vect_is_simple_use. (vectorizable_live_operation): Likewise. * tree-vect-patterns.c (widened_name_p, - vect_recog_vector_vector_shift_pattern, check_bool_pattern): - Likewise. + vect_recog_vector_vector_shift_pattern, check_bool_pattern): Likewise. * tree-vect-stmts.c (process_use, vect_get_vec_def_for_operand, - vectorizable_call, vectorizable_conversion, - vectorizable_assignment, vectorizable_shift, - vectorizable_operation, vectorizable_store, vectorizable_load): - Likewise. + vectorizable_call, vectorizable_conversion, vectorizable_assignment, + vectorizable_shift,vectorizable_operation, vectorizable_store, + vectorizable_load): Likewise. (vect_is_simple_cond): Add an argument, pass it to vect_is_simple_use_1. (vectorizable_condition): Update calls to vect_is_simple_cond, @@ -436,8 +438,7 @@ 2012-01-31 Matthew Gretton-Dann - config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true - condition. + * config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true condition. 2012-01-31 Jakub Jelinek @@ -537,7 +538,7 @@ 2012-01-29 Uros Bizjak - * config/alpha/alpha.c (alpha_option_overrride): Default to + * config/alpha/alpha.c (alpha_option_override): Default to full IEEE compliance mode for Go language. 2011-01-29 Tijl Coosemans diff --git a/gcc/compare-elim.c b/gcc/compare-elim.c index 8d7fd01..15d8d62 100644 --- a/gcc/compare-elim.c +++ b/gcc/compare-elim.c @@ -297,8 +297,11 @@ find_comparisons_in_bb (struct dom_walk_data *data ATTRIBUTE_UNUSED, src = conforming_compare (insn); if (src) { + enum machine_mode src_mode = GET_MODE (src); + /* Eliminate a compare that's redundant with the previous. */ if (last_cmp_valid + && src_mode == last_cmp->orig_mode && rtx_equal_p (last_cmp->in_a, XEXP (src, 0)) && rtx_equal_p (last_cmp->in_b, XEXP (src, 1))) { @@ -311,7 +314,7 @@ find_comparisons_in_bb (struct dom_walk_data *data ATTRIBUTE_UNUSED, last_cmp->prev_clobber = last_clobber; last_cmp->in_a = XEXP (src, 0); last_cmp->in_b = XEXP (src, 1); - last_cmp->orig_mode = GET_MODE (SET_DEST (single_set (insn))); + last_cmp->orig_mode = src_mode; VEC_safe_push (comparison_struct_p, heap, all_compares, last_cmp); /* It's unusual, but be prepared for comparison patterns that -- 2.7.4