Commit 6d9cc15b by Josef Zlomek Committed by Josef Zlomek

bb-reorder.c (find_traces_1_round): Fixed condition for small destination block…

bb-reorder.c (find_traces_1_round): Fixed condition for small destination block with multiple predecessors.

	* bb-reorder.c (find_traces_1_round): Fixed condition for small
	destination block with multiple predecessors.
	(connect_traces): Check whether the block is a start of trace.

From-SVN: r63127
parent 563a317a
2003-02-19 Josef Zlomek <zlomekj@suse.cz>
* bb-reorder.c (find_traces_1_round): Fixed condition for small
destination block with multiple predecessors.
(connect_traces): Check whether the block is a start of trace.
Wed Feb 19 19:00:24 CET 2003 Jan Hubicka <jh@suse.cz>
* calls.c (expand_call): Update call of INIT_CUMULATIVE_ARGS
......
......@@ -448,12 +448,6 @@ find_traces_1_round (branch_th, exec_th, count_th, traces, n_traces, round,
|| prob < branch_th || freq < exec_th || e->count < count_th)
continue;
/* If the destination has multiple precessesors, and can be
duplicated cheaper than a jump, don't allow it to be added
to a trace. We'll duplicate it when connecting traces. */
if (e->dest->pred->pred_next && copy_bb_p (e->dest, 0))
continue;
if (better_edge_p (bb, e, prob, freq, best_prob, best_freq))
{
best_edge = e;
......@@ -462,6 +456,13 @@ find_traces_1_round (branch_th, exec_th, count_th, traces, n_traces, round,
}
}
/* If the best destination has multiple precessesors, and can be
duplicated cheaper than a jump, don't allow it to be added
to a trace. We'll duplicate it when connecting traces. */
if (best_edge && best_edge->dest->pred->pred_next
&& copy_bb_p (best_edge->dest, 0))
best_edge = NULL;
/* Add all non-selected successors to the heaps. */
for (e = bb->succ; e; e = e->succ_next)
{
......@@ -922,15 +923,17 @@ connect_traces (n_traces, traces)
edge best2 = NULL;
int best2_len = 0;
/* If the destination trace is only one block
long, then no need to search the successor
/* If the destination is a start of a trace which is only
one block long, then no need to search the successor
blocks of the trace. Accept it. */
if (traces[bbd[e->dest->index].start_of_trace].length == 1)
{
best = e;
try_copy = true;
continue;
}
if (bbd[e->dest->index].start_of_trace >= 0
&& traces[bbd[e->dest->index].start_of_trace].length
== 1)
{
best = e;
try_copy = true;
continue;
}
for (e2 = e->dest->succ; e2; e2 = e2->succ_next)
{
......
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