From 651159e5d652ae1dcc48f8107fa5e5b272767d5b Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 24 Aug 2015 17:59:31 +0000 Subject: [PATCH] ifcvt.c (HAVE_incscc, [...]): Delete. gcc/ * ifcvt.c (HAVE_incscc, HAVE_decscc, HAVE_cbranchcc4): Delete. (have_cbranchcc4): New variable. (cc_in_cond, noce_emit_cmove, noce_get_alt_condition) (noce_get_condition): Use it instead of HAVE_cbranchcc4. (if_convert): Initialize have_cbranchcc4. From-SVN: r227142 --- gcc/ChangeLog | 8 ++++++++ gcc/ifcvt.c | 24 +++++++++--------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2fcad497751..7ef1166c145 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2015-08-24 Richard Sandiford + + * ifcvt.c (HAVE_incscc, HAVE_decscc, HAVE_cbranchcc4): Delete. + (have_cbranchcc4): New variable. + (cc_in_cond, noce_emit_cmove, noce_get_alt_condition) + (noce_get_condition): Use it instead of HAVE_cbranchcc4. + (if_convert): Initialize have_cbranchcc4. + 2015-08-24 Richard Sandiford * builtins.c (expand_cmpstrn): Rename to... diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index a46efec6059..5cf1721fcfa 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -55,23 +55,12 @@ #include "shrink-wrap.h" #include "ifcvt.h" -#ifndef HAVE_incscc -#define HAVE_incscc 0 -#endif -#ifndef HAVE_decscc -#define HAVE_decscc 0 -#endif - #ifndef MAX_CONDITIONAL_EXECUTE #define MAX_CONDITIONAL_EXECUTE \ (BRANCH_COST (optimize_function_for_speed_p (cfun), false) \ + 1) #endif -#ifndef HAVE_cbranchcc4 -#define HAVE_cbranchcc4 0 -#endif - #define IFCVT_MULTIPLE_DUMPS 1 #define NULL_BLOCK ((basic_block) NULL) @@ -79,6 +68,9 @@ /* True if after combine pass. */ static bool ifcvt_after_combine; +/* True if the target has the cbranchcc4 optab. */ +static bool have_cbranchcc4; + /* # of IF-THEN or IF-THEN-ELSE blocks we looked at */ static int num_possible_if_blocks; @@ -1014,7 +1006,7 @@ noce_emit_move_insn (rtx x, rtx y) static rtx cc_in_cond (rtx cond) { - if (HAVE_cbranchcc4 && cond + if (have_cbranchcc4 && cond && GET_MODE_CLASS (GET_MODE (XEXP (cond, 0))) == MODE_CC) return XEXP (cond, 0); @@ -1557,7 +1549,7 @@ noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code, if (! general_operand (cmp_a, GET_MODE (cmp_a)) || ! general_operand (cmp_b, GET_MODE (cmp_b))) { - if (!(HAVE_cbranchcc4) + if (!have_cbranchcc4 || GET_MODE_CLASS (GET_MODE (cmp_a)) != MODE_CC || cmp_b != const0_rtx) return NULL_RTX; @@ -2052,7 +2044,7 @@ noce_get_alt_condition (struct noce_if_info *if_info, rtx target, } cond = canonicalize_condition (if_info->jump, cond, reverse, - earliest, target, HAVE_cbranchcc4, true); + earliest, target, have_cbranchcc4, true); if (! cond || ! reg_mentioned_p (target, cond)) return NULL; @@ -2544,7 +2536,7 @@ noce_get_condition (rtx_insn *jump, rtx_insn **earliest, bool then_else_reversed /* Otherwise, fall back on canonicalize_condition to do the dirty work of manipulating MODE_CC values and COMPARE rtx codes. */ tmp = canonicalize_condition (jump, cond, reverse, earliest, - NULL_RTX, HAVE_cbranchcc4, true); + NULL_RTX, have_cbranchcc4, true); /* We don't handle side-effects in the condition, like handling REG_INC notes and making sure no duplicate conditions are emitted. */ @@ -4645,6 +4637,8 @@ if_convert (bool after_combine) /* Record whether we are after combine pass. */ ifcvt_after_combine = after_combine; + have_cbranchcc4 = (direct_optab_handler (cbranch_optab, CCmode) + != CODE_FOR_nothing); num_possible_if_blocks = 0; num_updated_if_blocks = 0; num_true_changes = 0; -- 2.30.2