https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69609

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Maybe sth as simple as

Index: gcc/bb-reorder.c
===================================================================
--- gcc/bb-reorder.c    (revision 233262)
+++ gcc/bb-reorder.c    (working copy)
@@ -889,6 +889,7 @@ bb_to_key (basic_block bb)

   /* Prefer blocks whose predecessor is an end of some trace
      or whose predecessor edge is EDGE_DFS_BACK.  */
+  if (EDGE_COUNT (bb->preds) <= 8)
   FOR_EACH_EDGE (e, ei, bb->preds)
     {
       if ((e->src != ENTRY_BLOCK_PTR_FOR_FN (cfun)

or precomputing whether a BB has abnormal preds and disabling the trace in
that case (or somehow sorting the edge vectors so that abnormal edges
come last so we can stop at the first abnormal edge).

Reply via email to