Hello,

EDGE_CAN_FALLTHRU is internal to bb-reorder.c,
set_edge_can_fallthru_flag() clears it on all edges and computes it
fresh for bb-reorder.

The test in rtl_verify_flow_info_1 has to stay because bb-reorder
doesn't clean up the flag after it's done.

Bootstrapped&tested on powerpc64-unknown-linux-gnu. OK?

Ciao!
Steven

        * haifa-sched.c (init_before_recovery): Do not set EDGE_CAN_FALLTHRU.
        * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.

Index: haifa-sched.c
===================================================================
--- haifa-sched.c       (revision 189478)
+++ haifa-sched.c       (working copy)
@@ -7193,8 +7193,7 @@ init_before_recovery (basic_block *before_recovery

       redirect_edge_succ (e, single);
       make_single_succ_edge (single, empty, 0);
-      make_single_succ_edge (empty, EXIT_BLOCK_PTR,
-                            EDGE_FALLTHRU | EDGE_CAN_FALLTHRU);
+      make_single_succ_edge (empty, EXIT_BLOCK_PTR, EDGE_FALLTHRU);

       label = block_label (empty);
       x = emit_jump_insn_after (gen_jump (label), BB_END (single));
Index: cfgrtl.c
===================================================================
--- cfgrtl.c    (revision 189478)
+++ cfgrtl.c    (working copy)
@@ -1365,8 +1365,8 @@ force_nonfallthru_and_redirect (edge e, basic_bloc
         one and create separate abnormal edge to original destination.
         This allows bb-reorder to make such edge non-fallthru.  */
       gcc_assert (e->dest == target);
-      abnormal_edge_flags = e->flags & ~(EDGE_FALLTHRU | EDGE_CAN_FALLTHRU);
-      e->flags &= EDGE_FALLTHRU | EDGE_CAN_FALLTHRU;
+      abnormal_edge_flags = e->flags & ~EDGE_FALLTHRU;
+      e->flags &= EDGE_FALLTHRU;
     }
   else
     {

Reply via email to