cfgrtl.c (rtl_verify_edges): Formatting fix.
authorJakub Jelinek <jakub@redhat.com>
Wed, 20 Jun 2018 14:42:19 +0000 (16:42 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 20 Jun 2018 14:42:19 +0000 (16:42 +0200)
* cfgrtl.c (rtl_verify_edges): Formatting fix.  If bb->preds has any
EDGE_EH edges, verify they are all EDGE_EH.

From-SVN: r261803

gcc/ChangeLog
gcc/cfgrtl.c

index f7a2ee7ae4d05259cce1d1d8d5e4cb11740bc1d7..86db35fde19825fa209b9734ca9c8a8f2a4b087f 100644 (file)
@@ -1,3 +1,8 @@
+2018-06-20  Jakub Jelinek  <jakub@redhat.com>
+
+       * cfgrtl.c (rtl_verify_edges): Formatting fix.  If bb->preds has any
+       EDGE_EH edges, verify they are all EDGE_EH.
+
 2018-06-20  Maya Rashish  <coypu@sdf.org>
 
        * ginclude/stddef.h: Limit #include <machine/ansi.h> to NetBSD.
index de704ce16d0640d26eebbab00d9428e42b0de762..19cef2272b67c5ceaf0c71710b6ce9f34f00cf88 100644 (file)
@@ -2540,15 +2540,15 @@ rtl_verify_edges (void)
            n_abnormal++;
        }
 
-        if (!has_crossing_edge
-           && JUMP_P (BB_END (bb))
-           && CROSSING_JUMP_P (BB_END (bb)))
-          {
-           print_rtl_with_bb (stderr, get_insns (), TDF_BLOCKS | TDF_DETAILS);
-            error ("Region crossing jump across same section in bb %i",
-                   bb->index);
-            err = 1;
-          }
+      if (!has_crossing_edge
+         && JUMP_P (BB_END (bb))
+         && CROSSING_JUMP_P (BB_END (bb)))
+       {
+         print_rtl_with_bb (stderr, get_insns (), TDF_BLOCKS | TDF_DETAILS);
+         error ("Region crossing jump across same section in bb %i",
+                bb->index);
+         err = 1;
+       }
 
       if (n_eh && !find_reg_note (BB_END (bb), REG_EH_REGION, NULL_RTX))
        {
@@ -2606,6 +2606,19 @@ rtl_verify_edges (void)
          error ("abnormal edges for no purpose in bb %i", bb->index);
          err = 1;
        }
+
+      int has_eh = -1;
+      FOR_EACH_EDGE (e, ei, bb->preds)
+       {
+         if (has_eh == -1)
+           has_eh = (e->flags & EDGE_EH);
+         if ((e->flags & EDGE_EH) == has_eh)
+           continue;
+         error ("EH incoming edge mixed with non-EH incoming edges "
+                "in bb %i", bb->index);
+         err = 1;
+         break;
+       }
     }
 
   /* If there are partitions, do a sanity check on them: A basic block in