Fix PR rtl-optimization/60601

Message ID 14244973.FZEsiV2GuH@polaris
State New
Headers show

Commit Message

Eric Botcazou March 23, 2014, 11:22 a.m.
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  <>

	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.


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;
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)