From 52d36202068b019e775412712d57c6f6d451ac97 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 16 Jan 2015 04:05:31 +0100 Subject: [PATCH] ipa-inline.c (inline_small_functions): Work around hints cache issue. * ipa-inline.c (inline_small_functions): Work around hints cache issue. From-SVN: r219702 --- gcc/ChangeLog | 5 +++++ gcc/ipa-inline.c | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 62735a7a77e..dd7aa74762b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-01-15 Jan Hubicka + + * ipa-inline.c (inline_small_functions): Work around hints + cache issue. + 2015-01-15 Sandra Loosemore PR target/59710 diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 1a227a26380..f270cfa58f3 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1655,7 +1655,18 @@ inline_small_functions (void) reset_edge_growth_cache (edge); gcc_assert (old_size_est == estimate_edge_size (edge)); gcc_assert (old_time_est == estimate_edge_time (edge)); - gcc_assert (old_hints_est == estimate_edge_hints (edge)); + /* FIXME: + + gcc_assert (old_hints_est == estimate_edge_hints (edge)); + + fails with profile feedback because some hints depends on + maybe_hot_edge_p predicate and because callee gets inlined to other + calls, the edge may become cold. + This ought to be fixed by computing relative probabilities + for given invocation but that will be better done once whole + code is converted to sreals. Disable for now and revert to "wrong" + value so enable/disable checking paths agree. */ + edge_growth_cache[edge->uid].hints = old_hints_est + 1; /* When updating the edge costs, we only decrease badness in the keys. Increases of badness are handled lazilly; when we see key with out -- 2.30.2