Commit 91f4cfe3 by Zdenek Dvorak Committed by Zdenek Dvorak

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
parent ac38d8da
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> 2003-05-11 Neil Booth <neil@cat.daikokuya.co.uk>
* doc/cpp.texi: Fix typos. * doc/cpp.texi: Fix typos.
......
...@@ -1033,7 +1033,8 @@ num_loop_insns (loop) ...@@ -1033,7 +1033,8 @@ num_loop_insns (loop)
bb = bbs[i]; bb = bbs[i];
ninsns++; ninsns++;
for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn)) for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn))
ninsns++; if (INSN_P (insn))
ninsns++;
} }
free(bbs); free(bbs);
...@@ -1057,7 +1058,8 @@ average_num_loop_insns (loop) ...@@ -1057,7 +1058,8 @@ average_num_loop_insns (loop)
binsns = 1; binsns = 1;
for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn)) for (insn = bb->head; insn != bb->end; insn = NEXT_INSN (insn))
binsns++; if (INSN_P (insn))
binsns++;
ratio = loop->header->frequency == 0 ratio = loop->header->frequency == 0
? BB_FREQ_MAX ? BB_FREQ_MAX
......
...@@ -878,36 +878,33 @@ unroll_loop_runtime_iterations (loops, loop) ...@@ -878,36 +878,33 @@ unroll_loop_runtime_iterations (loops, loop)
DLTHE_FLAG_UPDATE_FREQ)) DLTHE_FLAG_UPDATE_FREQ))
abort (); abort ();
if (i != n_peel) /* Create item for switch. */
{ j = n_peel - i - (extra_zero_check ? 0 : 1);
/* Create item for switch. */ p = REG_BR_PROB_BASE / (i + 2);
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);
preheader = loop_split_edge_with (loop_preheader_edge (loop), label = block_label (preheader);
NULL_RTX, loops); start_sequence ();
label = block_label (preheader); do_compare_rtx_and_jump (copy_rtx (niter), GEN_INT (j), EQ, 0,
start_sequence (); GET_MODE (desc->var), NULL_RTX, NULL_RTX,
do_compare_rtx_and_jump (copy_rtx (niter), GEN_INT (j), EQ, 0, label);
GET_MODE (desc->var), NULL_RTX, NULL_RTX, jump = get_last_insn ();
label); JUMP_LABEL (jump) = label;
jump = get_last_insn (); REG_NOTES (jump)
JUMP_LABEL (jump) = label; = gen_rtx_EXPR_LIST (REG_BR_PROB,
REG_NOTES (jump) GEN_INT (p), REG_NOTES (jump));
= gen_rtx_EXPR_LIST (REG_BR_PROB,
GEN_INT (p), REG_NOTES (jump));
LABEL_NUSES (label)++; LABEL_NUSES (label)++;
branch_code = get_insns (); branch_code = get_insns ();
end_sequence (); end_sequence ();
swtch = loop_split_edge_with (swtch->pred, branch_code, loops); swtch = loop_split_edge_with (swtch->pred, branch_code, loops);
set_immediate_dominator (loops->cfg.dom, preheader, swtch); set_immediate_dominator (loops->cfg.dom, preheader, swtch);
swtch->succ->probability = REG_BR_PROB_BASE - p; swtch->succ->probability = REG_BR_PROB_BASE - p;
e = make_edge (swtch, preheader, e = make_edge (swtch, preheader,
swtch->succ->flags & EDGE_IRREDUCIBLE_LOOP); swtch->succ->flags & EDGE_IRREDUCIBLE_LOOP);
e->probability = p; e->probability = p;
}
} }
if (extra_zero_check) if (extra_zero_check)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment