diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2017-01-21 20:36:01 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2017-01-21 19:36:01 +0000 |
commit | a6a70dcad2d9f329fffb4d5eb39b02699df2e7ed (patch) | |
tree | 620053cdd7b36b632d57e5685e05c239c76cf8ec | |
parent | 509912a611f9e86883cd1f3c1751e4a1b3cb7abf (diff) | |
download | gcc-a6a70dcad2d9f329fffb4d5eb39b02699df2e7ed.tar.gz |
re PR lto/78407 (LTO breaks separate overriding of symbol aliases)
PR lto/78407
* cfg.c (update_bb_profile_for_threading): Fix updating of probablity.
From-SVN: r244749
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cfg.c | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 95c54e5b82e..2980e46f4b8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-01-21 Jan Hubicka <hubicka@ucw.cz> + + PR lto/78407 + * cfg.c (update_bb_profile_for_threading): Fix updating of probablity. + 2017-01-21 Bernd Schmidt <bschmidt@redhat.com> rtl-optimization/79125 diff --git a/gcc/cfg.c b/gcc/cfg.c index 97cc755cccd..1bcf9b8227f 100644 --- a/gcc/cfg.c +++ b/gcc/cfg.c @@ -869,6 +869,10 @@ update_bb_profile_for_threading (basic_block bb, int edge_frequency, bb->count = 0; } + bb->frequency -= edge_frequency; + if (bb->frequency < 0) + bb->frequency = 0; + /* Compute the probability of TAKEN_EDGE being reached via threaded edge. Watch for overflows. */ if (bb->frequency) @@ -882,15 +886,12 @@ update_bb_profile_for_threading (basic_block bb, int edge_frequency, "%i->%i too small (it is %i, should be %i).\n", taken_edge->src->index, taken_edge->dest->index, taken_edge->probability, prob); - prob = taken_edge->probability; + prob = taken_edge->probability * 6 / 8; } /* Now rescale the probabilities. */ taken_edge->probability -= prob; prob = REG_BR_PROB_BASE - prob; - bb->frequency -= edge_frequency; - if (bb->frequency < 0) - bb->frequency = 0; if (prob <= 0) { if (dump_file) |