This is the profiled bootstrap failure on the mainline with Ada enabled and 
comes from a pasto in fix_up_fall_thru_edges, which tests EDGE_FALLTHRU to 
detect falltrugh edges when there are at most 2 outgoing edges but switches to 
EDGE_CAN_FALLTHRU when there are more than 2 outgoing edges.  Now this latter 
flag is never set during the bbpart pass but only during bbro.

The gcc.c hunk silences a fatal -Wmaybe-uninitialized warning on the mainline.

Profiledbootstrapped/regtested on x86_64-suse-linux, applied on all active 
branches, as obvious for the gcc.c hunk.


2014-03-23  Eric Botcazou  <ebotca...@adacore.com>

        PR rtl-optimization/60601
        * bb-reorder.c (fix_up_fall_thru_edges): Test EDGE_FALLTHRU everywhere.

        * gcc.c (eval_spec_function): Initialize save_growing_value.


-- 
Eric Botcazou
Index: bb-reorder.c
===================================================================
--- bb-reorder.c	(revision 208763)
+++ bb-reorder.c	(working copy)
@@ -1826,9 +1826,8 @@ fix_up_fall_thru_edges (void)
 	  edge e;
 	  edge_iterator ei;
 
-	  /* Find EDGE_CAN_FALLTHRU edge.  */
 	  FOR_EACH_EDGE (e, ei, cur_bb->succs)
-	    if (e->flags & EDGE_CAN_FALLTHRU)
+	    if (e->flags & EDGE_FALLTHRU)
 	      {
 		fall_thru = e;
 		break;
Index: gcc.c
===================================================================
--- gcc.c	(revision 208763)
+++ gcc.c	(working copy)
@@ -5481,7 +5481,7 @@ eval_spec_function (const char *func, co
   const char *save_suffix_subst;
 
   int save_growing_size;
-  void *save_growing_value;
+  void *save_growing_value = NULL;
 
   sf = lookup_spec_function (func);
   if (sf == NULL)

Reply via email to