ipa-inline.c (inline_small_functions): Work around hints cache issue.
authorJan Hubicka <hubicka@ucw.cz>
Fri, 16 Jan 2015 03:05:31 +0000 (04:05 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 16 Jan 2015 03:05:31 +0000 (03:05 +0000)
* ipa-inline.c (inline_small_functions): Work around hints
cache issue.

From-SVN: r219702

gcc/ChangeLog
gcc/ipa-inline.c

index 62735a7a77e6d3f1a898b4427067b4f38ac7257e..dd7aa74762b6ac24e0b7436d31f1d46133ba874b 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-15  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-inline.c (inline_small_functions): Work around hints
+       cache issue.
+
 2015-01-15  Sandra Loosemore  <sandra@codesourcery.com>
 
        PR target/59710
index 1a227a26380f5e79d58609992ec925284473d045..f270cfa58f3ad969b4d74560971fbe195656f3b6 100644 (file)
@@ -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