From: Zdenek Dvorak Date: Sun, 11 May 2003 22:54:33 +0000 (+0200) Subject: cfgloopanal.c (num_loop_insns, [...]): Count only real insns. X-Git-Tag: releases/gcc-3.4.0~6655 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=91f4cfe34425362425867d896bcb831df6926580;p=gcc.git cfgloopanal.c (num_loop_insns, [...]): Count only real insns. * cfgloopanal.c (num_loop_insns, average_num_loop_insns): Count only real insns. * loop-unroll.c (unroll_loop_runtime_iterations): Remove superfluous condition. From-SVN: r66700 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 310984e6421c..da8a280c1004 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-05-12 Zdenek Dvorak + + * cfgloopanal.c (num_loop_insns, average_num_loop_insns): Count only + real insns. + * loop-unroll.c (unroll_loop_runtime_iterations): Remove superfluous + condition. + 2003-05-11 Neil Booth * doc/cpp.texi: Fix typos. diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c index 0843a006acbc..c3ef5a30739a 100644 --- a/gcc/cfgloopanal.c +++ b/gcc/cfgloopanal.c @@ -1033,7 +1033,8 @@ num_loop_insns (loop) bb = bbs[i]; ninsns++; for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn)) - ninsns++; + if (INSN_P (insn)) + ninsns++; } free(bbs); @@ -1057,7 +1058,8 @@ average_num_loop_insns (loop) binsns = 1; for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn)) - binsns++; + if (INSN_P (insn)) + binsns++; ratio = loop->header->frequency == 0 ? BB_FREQ_MAX diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c index efecd4d27d48..e8509de774ff 100644 --- a/gcc/loop-unroll.c +++ b/gcc/loop-unroll.c @@ -878,36 +878,33 @@ unroll_loop_runtime_iterations (loops, loop) DLTHE_FLAG_UPDATE_FREQ)) abort (); - if (i != n_peel) - { - /* Create item for switch. */ - j = n_peel - i - (extra_zero_check ? 0 : 1); - p = REG_BR_PROB_BASE / (i + 2); - - preheader = loop_split_edge_with (loop_preheader_edge (loop), - NULL_RTX, loops); - label = block_label (preheader); - start_sequence (); - do_compare_rtx_and_jump (copy_rtx (niter), GEN_INT (j), EQ, 0, - GET_MODE (desc->var), NULL_RTX, NULL_RTX, - label); - jump = get_last_insn (); - JUMP_LABEL (jump) = label; - REG_NOTES (jump) - = gen_rtx_EXPR_LIST (REG_BR_PROB, - GEN_INT (p), REG_NOTES (jump)); + /* Create item for switch. */ + j = n_peel - i - (extra_zero_check ? 0 : 1); + p = REG_BR_PROB_BASE / (i + 2); + + preheader = loop_split_edge_with (loop_preheader_edge (loop), + NULL_RTX, loops); + label = block_label (preheader); + start_sequence (); + do_compare_rtx_and_jump (copy_rtx (niter), GEN_INT (j), EQ, 0, + GET_MODE (desc->var), NULL_RTX, NULL_RTX, + label); + jump = get_last_insn (); + JUMP_LABEL (jump) = label; + REG_NOTES (jump) + = gen_rtx_EXPR_LIST (REG_BR_PROB, + GEN_INT (p), REG_NOTES (jump)); - LABEL_NUSES (label)++; - branch_code = get_insns (); - end_sequence (); - - swtch = loop_split_edge_with (swtch->pred, branch_code, loops); - set_immediate_dominator (loops->cfg.dom, preheader, swtch); - swtch->succ->probability = REG_BR_PROB_BASE - p; - e = make_edge (swtch, preheader, - swtch->succ->flags & EDGE_IRREDUCIBLE_LOOP); - e->probability = p; - } + LABEL_NUSES (label)++; + branch_code = get_insns (); + end_sequence (); + + swtch = loop_split_edge_with (swtch->pred, branch_code, loops); + set_immediate_dominator (loops->cfg.dom, preheader, swtch); + swtch->succ->probability = REG_BR_PROB_BASE - p; + e = make_edge (swtch, preheader, + swtch->succ->flags & EDGE_IRREDUCIBLE_LOOP); + e->probability = p; } if (extra_zero_check)