From 7d14f0fcec5a42b1a532f616ea57abb86c54b5f3 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 6 Mar 2006 11:13:25 +0000 Subject: [PATCH] * config/m32r/m32r.h (OPTIMIZATION_OPTIONS): Remove reference to flag_strength_reduce. From-SVN: r111786 --- gcc/ChangeLog | 5 +++++ gcc/config/m32r/m32r.c | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 713be1a0471..d8ecfa7cd2e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-03-06 Nick Clifton + + * config/m32r/m32r.h (OPTIMIZATION_OPTIONS): Remove reference to + flag_strength_reduce. + 2006-03-06 Ben Elliston * config.gcc: Add t-dfprules to $tmake_file for i*86-*-linux* and diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c index e7e1a2d3024..1134569f86a 100644 --- a/gcc/config/m32r/m32r.c +++ b/gcc/config/m32r/m32r.c @@ -692,6 +692,17 @@ gen_compare (enum rtx_code code, rtx x, rtx y, int need_compare) { case EQ: if (GET_CODE (y) == CONST_INT + && UINT16_P (INTVAL (y)) /* Reg equal to small const. */ + && y != const0_rtx) + { + rtx tmp = gen_reg_rtx (SImode); + + emit_insn (gen_xorsi3 (tmp, x, GEN_INT (INTVAL (y)))); + x = tmp; + y = const0_rtx; + } +#if 0 /* Removed for miss optimizing at simplify_relational_operation(). */ + else if (GET_CODE (y) == CONST_INT && CMP_INT16_P (INTVAL (y)) /* Reg equal to small const. */ && y != const0_rtx) { @@ -701,6 +712,7 @@ gen_compare (enum rtx_code code, rtx x, rtx y, int need_compare) x = tmp; y = const0_rtx; } +#endif else if (CONSTANT_P (y)) /* Reg equal to const. */ { rtx tmp = force_reg (GET_MODE (x), y); @@ -813,6 +825,17 @@ gen_compare (enum rtx_code code, rtx x, rtx y, int need_compare) return gen_rtx_fmt_ee (code, CCmode, x, y); /* Reg/smallconst equal comparison. */ + if (compare_code == EQ + && GET_CODE (y) == CONST_INT + && UINT16_P (INTVAL (y))) + { + rtx tmp = gen_reg_rtx (SImode); + + emit_insn (gen_xorsi3 (tmp, x, GEN_INT (INTVAL (y)))); + return gen_rtx_fmt_ee (code, CCmode, tmp, const0_rtx); + } + +#if 0 /* Removed for miss optimizing at simplify_relational_operation(). */ if (compare_code == EQ && GET_CODE (y) == CONST_INT && CMP_INT16_P (INTVAL (y))) @@ -822,6 +845,7 @@ gen_compare (enum rtx_code code, rtx x, rtx y, int need_compare) emit_insn (gen_addsi3 (tmp, x, GEN_INT (-INTVAL (y)))); return gen_rtx_fmt_ee (code, CCmode, tmp, const0_rtx); } +#endif /* Reg/const equal comparison. */ if (compare_code == EQ