summaryrefslogtreecommitdiff
path: root/gcc/ipa-inline.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-01-16 04:05:31 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2015-01-16 03:05:31 +0000
commit52d36202068b019e775412712d57c6f6d451ac97 (patch)
tree3c8887900248c868cb2ad60898e6839ee8cd5177 /gcc/ipa-inline.c
parentcb054b6341634a175d00fccf3ca07bcddaa69765 (diff)
downloadgcc-52d36202068b019e775412712d57c6f6d451ac97.tar.gz
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
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r--gcc/ipa-inline.c13
1 files changed, 12 insertions, 1 deletions
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