http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50823
--- Comment #2 from Markus Trippelsdorf <markus at trippelsdorf dot de>
2011-10-21 16:10:45 UTC ---
Caused by:
commit 60ac8a3c08cc653bc92507cb1be08ca2ebe6774a
Author: hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu Oct 20 11:46:08 2011 +0000
PR bootstrap/50709
* ipa-inline.c (inline_small_functions): Fix checking code to not make
effect on fibheap stability.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180247
138bc75d-0d04-0410-961f-82ee72b054a4
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 204ab43..e7c42e5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-10-19 Jan Hubicka <[email protected]>
+
+ PR bootstrap/50709
+ * ipa-inline.c (inline_small_functions): Fix checking code to not make
+ effect on fibheap stability.
+
2011-10-20 Maxim Kuvyrkov <[email protected]>
* config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index f069914..909b5ba 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -1384,6 +1384,7 @@ inline_small_functions (void)
struct cgraph_node *where, *callee;
int badness = fibheap_min_key (heap);
int current_badness;
+ int cached_badness;
int growth;
edge = (struct cgraph_edge *) fibheap_extract_min (heap);
@@ -1392,16 +1393,18 @@ inline_small_functions (void)
if (!edge->inline_failed)
continue;
- /* Be sure that caches are maintained consistent. */
-#ifdef ENABLE_CHECKING
+ /* Be sure that caches are maintained consistent.
+ We can not make this ENABLE_CHECKING only because it cause differnt
+ updates of the fibheap queue. */
+ cached_badness = edge_badness (edge, false);
reset_edge_growth_cache (edge);
reset_node_growth_cache (edge->callee);
-#endif
/* When updating the edge costs, we only decrease badness in the keys.
Increases of badness are handled lazilly; when we see key with out
of date value on it, we re-insert it now. */
current_badness = edge_badness (edge, false);
+ gcc_assert (cached_badness == current_badness);
gcc_assert (current_badness >= badness);
if (current_badness != badness)
{
The whole cached_badness thing looks pretty bogus to me.