From 10f135942226e4ae2bbeb48515be4368d9745d68 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 17 Apr 2000 12:21:09 -0700 Subject: loop.c (canonicalize_condition): Add WANT_REG argument. * loop.c (canonicalize_condition): Add WANT_REG argument. Stop the search if we match it. * expr.h (canonicalize_condition): Update decl. * predict.c (expected_value_to_br_prob): Use it. Track last expected value note. (find_expected_value): Remove. * reorg.c (mostly_true_jump): Always use BR_PROB if present. From-SVN: r33214 --- gcc/reorg.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'gcc/reorg.c') diff --git a/gcc/reorg.c b/gcc/reorg.c index 379def7..cce40c0 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -900,30 +900,29 @@ mostly_true_jump (jump_insn, condition) rtx jump_insn, condition; { rtx target_label = JUMP_LABEL (jump_insn); - rtx insn; + rtx insn, note; int rare_dest = rare_destination (target_label); int rare_fallthrough = rare_destination (NEXT_INSN (jump_insn)); /* If branch probabilities are available, then use that number since it always gives a correct answer. */ - if (flag_branch_probabilities) + note = find_reg_note (jump_insn, REG_BR_PROB, 0); + if (note) { - rtx note = find_reg_note (jump_insn, REG_BR_PROB, 0); - if (note) - { - int prob = XINT (note, 0); + int prob = INTVAL (XEXP (note, 0)); - if (prob >= REG_BR_PROB_BASE * 9 / 10) - return 2; - else if (prob >= REG_BR_PROB_BASE / 2) - return 1; - else if (prob >= REG_BR_PROB_BASE / 10) - return 0; - else - return -1; - } + if (prob >= REG_BR_PROB_BASE * 9 / 10) + return 2; + else if (prob >= REG_BR_PROB_BASE / 2) + return 1; + else if (prob >= REG_BR_PROB_BASE / 10) + return 0; + else + return -1; } + /* ??? Ought to use estimate_probability instead. */ + /* If this is a branch outside a loop, it is highly unlikely. */ if (GET_CODE (PATTERN (jump_insn)) == SET && GET_CODE (SET_SRC (PATTERN (jump_insn))) == IF_THEN_ELSE -- cgit v1.1