]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR bootstrap/50709 (stage3 bootstrap comparison failure with --disable-checking...
authorJan Hubicka <jh@suse.cz>
Thu, 20 Oct 2011 11:46:08 +0000 (13:46 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Thu, 20 Oct 2011 11:46:08 +0000 (11:46 +0000)
PR bootstrap/50709
* ipa-inline.c (inline_small_functions): Fix checking code to not make
effect on fibheap stability.

From-SVN: r180247

gcc/ChangeLog
gcc/ipa-inline.c

index 204ab43be840d4dd71ba8f9869d5841aa4497f04..e7c42e5a7431cc4c92a09f84f617b1d32adceaad 100644 (file)
@@ -1,3 +1,9 @@
+2011-10-19  Jan Hubicka  <jh@suse.cz>
+
+       PR bootstrap/50709
+       * ipa-inline.c (inline_small_functions): Fix checking code to not make
+       effect on fibheap stability.
+
 2011-10-20  Maxim Kuvyrkov  <maxim@codesourcery.com>
 
        * config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
index f069914cf647055f69f45fca8a5da521cc87be84..909b5ba29f3d31a5016d86d61b88542687749dda 100644 (file)
@@ -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)
        {