From 91f4cfe34425362425867d896bcb831df6926580 Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Mon, 12 May 2003 00:54:33 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 ++++++ gcc/cfgloopanal.c | 6 ++++-- gcc/loop-unroll.c | 55 ++++++++++++++++++++++------------------------- 3 files changed, 37 insertions(+), 31 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 310984e6421..da8a280c100 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 0843a006acb..c3ef5a30739 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 efecd4d27d4..e8509de774f 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) -- 2.30.2