PR optimization/13430, PR optimization/12322
* bb-reorder.c (copy_bb_p): Do not allow block with many successors to
be copied.
(find_traces_1_round): Surround check for fake edges by
#ifdef ENABLE_CHECKING #endif.
From-SVN: r74887
+2003-12-20 Josef Zlomek <zlomekj@suse.cz>
+
+ PR optimization/13430, PR optimization/12322
+ * bb-reorder.c (copy_bb_p): Do not allow block with many successors to
+ be copied.
+ (find_traces_1_round): Surround check for fake edges by
+ #ifdef ENABLE_CHECKING #endif.
+
2003-12-20 Eric Botcazou <ebotcazou@libertysurf.fr>
PR other/7956
/* Select the successor that will be placed after BB. */
for (e = bb->succ; e; e = e->succ_next)
{
+#ifdef ENABLE_CHECKING
if (e->flags & EDGE_FAKE)
abort ();
+#endif
if (e->dest == EXIT_BLOCK_PTR)
continue;
int size = 0;
int max_size = uncond_jump_length;
rtx insn;
+ int n_succ;
+ edge e;
if (!bb->frequency)
return false;
if (!cfg_layout_can_duplicate_bb_p (bb))
return false;
+ /* Avoid duplicating blocks which have many successors (PR/13430). */
+ n_succ = 0;
+ for (e = bb->succ; e; e = e->succ_next)
+ {
+ n_succ++;
+ if (n_succ > 8)
+ return false;
+ }
+
if (code_may_grow && maybe_hot_bb_p (bb))
max_size *= 8;