summaryrefslogtreecommitdiffstats
path: root/gcc/compare-elim.c
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-11 08:11:34 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-11 08:11:34 +0000
commit67755ff06f1dec8e888a9f8a08375edff3bccf9b (patch)
treea79a77ff63e91824a64db15c69f6b933d0f1d178 /gcc/compare-elim.c
parentc2e397da783df9052a075fd58f19c1b82afa5c8e (diff)
downloadppe42-gcc-67755ff06f1dec8e888a9f8a08375edff3bccf9b.tar.gz
ppe42-gcc-67755ff06f1dec8e888a9f8a08375edff3bccf9b.zip
* 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
Diffstat (limited to 'gcc/compare-elim.c')
-rw-r--r--gcc/compare-elim.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/compare-elim.c b/gcc/compare-elim.c
index 8d7fd010b9d..15d8d622585 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
OpenPOWER on IntegriCloud