> This patch fixes a profiledbootstrap failure that occurred after I > added some profile fixup. The initial profile insanity occurred > upstream of my change, but my change caused the insanity to spread to > the edge probability, resulting in a verify failure. The patch below > ensures this doesn't occur. > > Bootstrapped and tested on x86-64-unknown-linux-gnu. A > profiledbootstrap build also now succeeds. Ok for trunk?
OK. Honza > > Thanks, > Teresa > > 2013-10-29 Teresa Johnson <tejohn...@google.com> > > PR ipa/58862 > * tree-ssa-tail-merge.c (replace_block_by): Tolerate profile > insanities when updating probabilities. > > Index: tree-ssa-tail-merge.c > =================================================================== > --- tree-ssa-tail-merge.c (revision 204166) > +++ tree-ssa-tail-merge.c (working copy) > @@ -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,16 +1502,22 @@ 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. */ > release_last_vdef (bb1); > > > -- > Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413