diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2017-07-16 18:36:48 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2017-07-16 16:36:48 +0000 |
commit | 109bb9be651660bd3624509880c5cb487698a2e9 (patch) | |
tree | eed7bdd0d029b5679e30cd5b47a3f2138e20e1bd /gcc | |
parent | b2ff44a8ebcc67ba914ce3bd60eafec23da5bff8 (diff) | |
download | gcc-109bb9be651660bd3624509880c5cb487698a2e9.zip gcc-109bb9be651660bd3624509880c5cb487698a2e9.tar.gz gcc-109bb9be651660bd3624509880c5cb487698a2e9.tar.bz2 |
* cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup.
From-SVN: r250243
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cgraph.c | 22 |
2 files changed, 15 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ccceea5..c6491ffa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2017-07-16 Jan Hubicka <hubicka@ucw.cz> + * cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup. + +2017-07-16 Jan Hubicka <hubicka@ucw.cz> + * cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE fixpoint arithmetics. diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 6711aeb..2f820f1 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -1315,19 +1315,19 @@ cgraph_edge::redirect_call_stmt_to_callee (void) } gcc_assert (e2->speculative); push_cfun (DECL_STRUCT_FUNCTION (e->caller->decl)); + + profile_probability prob = e->count.probability_in (e->count + + e2->count); + if (prob.initialized_p ()) + ; + else if (e->frequency || e2->frequency) + prob = profile_probability::probability_in_gcov_type + (e->frequency, e->frequency + e2->frequency).guessed (); + else + prob = profile_probability::even (); new_stmt = gimple_ic (e->call_stmt, dyn_cast<cgraph_node *> (ref->referred), - /* FIXME: cleanup. */ - profile_probability::from_reg_br_prob_base ( - e->count > profile_count::zero () - || e2->count > profile_count::zero () - ? e->count.probability_in - (e->count + e2->count).to_reg_br_prob_base () - : e->frequency || e2->frequency - ? RDIV (e->frequency * REG_BR_PROB_BASE, - e->frequency + e2->frequency) - : REG_BR_PROB_BASE / 2), - e->count, e->count + e2->count); + prob, e->count, e->count + e2->count); e->speculative = false; e->caller->set_call_stmt_including_clones (e->call_stmt, new_stmt, false); |