aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>2003-05-12 00:54:33 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2003-05-11 22:54:33 +0000
commit91f4cfe34425362425867d896bcb831df6926580 (patch)
treecada37c3708d1388d2a80d6f7cbd1591975d8a65
parentac38d8da36c73f77adf130019fa0c247fdca64a1 (diff)
downloadgcc-91f4cfe34425362425867d896bcb831df6926580.zip
gcc-91f4cfe34425362425867d896bcb831df6926580.tar.gz
gcc-91f4cfe34425362425867d896bcb831df6926580.tar.bz2
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cfgloopanal.c6
-rw-r--r--gcc/loop-unroll.c55
3 files changed, 37 insertions, 31 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 310984e..da8a280 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2003-05-12 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ * 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 <neil@cat.daikokuya.co.uk>
* doc/cpp.texi: Fix typos.
diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c
index 0843a00..c3ef5a3 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 efecd4d..e8509de 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)