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
This commit is contained in:
parent
258125712b
commit
b6c0035364
|
@ -1,3 +1,9 @@
|
|||
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. */
|
||||
|
|
Loading…
Reference in New Issue