diff mbox

Work around --enable-checking profiledbootstrap issue

Message ID 20150116030641.GA18125@kam.mff.cuni.cz
State New
Headers show

Commit Message

Jan Hubicka Jan. 16, 2015, 3:06 a.m. UTC
Hi,
this patch fixes ICE during profiledbootstrap. The underlying problem is somewhat hard
to fix (and not too important), so I will pospone it for next stage1.

Honza
diff mbox

Patch

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 219700)
+++ ChangeLog	(working copy)
@@ -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: ipa-inline.c
===================================================================
--- ipa-inline.c	(revision 219700)
+++ ipa-inline.c	(working copy)
@@ -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