diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 22cb5e7..b192c85 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -812,7 +812,6 @@ struct noce_if_info unsigned int else_cost; /* Estimated cost of the particular branch instruction. */ - unsigned int branch_cost; unsigned int rtx_edge_cost; }; @@ -1634,7 +1633,8 @@ noce_try_store_flag_mask (struct noce_if_info *if_info) speed_p = optimize_bb_for_speed_p (BLOCK_FOR_INSN (if_info->insn_a)); insn_cost = insn_rtx_cost (PATTERN (if_info->insn_a), speed_p); - old_cost = COSTS_N_INSNS (if_info->branch_cost) + insn_cost; + /* TODO: Revisit this cost model. */ + old_cost = if_info->rtx_edge_cost + insn_cost; new_cost = seq_cost (seq, speed_p); if (new_cost > old_cost) @@ -2105,7 +2105,9 @@ noce_try_cmove_arith (struct noce_if_info *if_info) /* We're going to execute one of the basic blocks anyway, so bail out if the most expensive of the two blocks is unacceptable. */ - if (MAX (then_cost, else_cost) > COSTS_N_INSNS (if_info->branch_cost)) + + /* TODO: Revisit cost model. */ + if (MAX (then_cost, else_cost) > if_info->rtx_edge_cost) return FALSE; /* Possibly rearrange operands to make things come out more natural. */ @@ -3280,8 +3282,8 @@ noce_convert_multiple_sets (struct noce_if_info *if_info) of conditional moves. FORNOW: Use II to find the expected cost of the branch into/over TEST_BB. - TODO: This creates an implicit "magic number" for branch_cost. - II->branch_cost now guides the maximum number of set instructions in + TODO: This creates an implicit "magic number" for if conversion. + II->rtx_edge_cost now guides the maximum number of set instructions in a basic block which is considered profitable to completely if-convert. */ @@ -3292,7 +3294,8 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, rtx_insn *insn; unsigned count = 0; unsigned param = PARAM_VALUE (PARAM_MAX_RTL_IF_CONVERSION_INSNS); - unsigned limit = MIN (ii->branch_cost, param); + /* TODO: Revisit this cost model. */ + unsigned limit = MIN (ii->rtx_edge_cost / COSTS_N_INSNS (1), param); FOR_BB_INSNS (test_bb, insn) { @@ -3993,8 +3996,6 @@ noce_find_if_block (basic_block test_bb, edge then_edge, edge else_edge, if_info.cond_earliest = cond_earliest; if_info.jump = jump; if_info.then_else_reversed = then_else_reversed; - if_info.branch_cost = BRANCH_COST (optimize_bb_for_speed_p (test_bb), - predictable_edge_p (then_edge)); if_info.rtx_edge_cost = targetm.rtx_branch_cost (optimize_bb_for_speed_p (test_bb), predictable_edge_p (then_edge));