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)