Commit b6c00353 by Teresa Johnson Committed by Teresa Johnson

re PR ipa/58862 (LTO profiledbootstrap failure: lto1: ICE in edge_badness, at ipa-inline.c:1008)

2013-10-29  Teresa Johnson  <tejohnson@google.com>

	PR ipa/58862
	* tree-ssa-tail-merge.c (replace_block_by): Tolerate profile
	insanities when updating probabilities.

From-SVN: r204178
parent 25812571
2013-10-29 Teresa Johnson <tejohnson@google.com>
PR ipa/58862
* tree-ssa-tail-merge.c (replace_block_by): Tolerate profile
insanities when updating probabilities.
2013-10-29 David Malcolm <dmalcolm@redhat.com>
* gdbhooks.py (CGraphNodePrinter.to_string): Update gdb
......@@ -1467,7 +1467,7 @@ static void
replace_block_by (basic_block bb1, basic_block bb2)
{
edge pred_edge;
edge e1;
edge e1, e2;
edge_iterator ei;
unsigned int i;
gimple bb2_phi;
......@@ -1502,15 +1502,21 @@ replace_block_by (basic_block bb1, basic_block bb2)
bb2->count += bb1->count;
/* Merge the outgoing edge counts from bb1 onto bb2. */
gcov_type out_sum = 0;
FOR_EACH_EDGE (e1, ei, bb1->succs)
{
edge e2;
e2 = find_edge (bb2, e1->dest);
gcc_assert (e2);
e2->count += e1->count;
/* Recompute the probability from the new merged edge count (bb2->count
was updated above). */
e2->probability = GCOV_COMPUTE_SCALE (e2->count, bb2->count);
out_sum += e2->count;
}
/* Recompute the edge probabilities from the new merged edge count.
Use the sum of the new merged edge counts computed above instead
of bb2's merged count, in case there are profile count insanities
making the bb count inconsistent with the edge weights. */
FOR_EACH_EDGE (e2, ei, bb2->succs)
{
e2->probability = GCOV_COMPUTE_SCALE (e2->count, out_sum);
}
/* Do updates that use bb1, before deleting bb1. */
......
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