diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-06-20 16:42:19 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-06-20 16:42:19 +0200 |
commit | d53e8ef490e59839909b536b1cf1d8aaaecfe43f (patch) | |
tree | 1374584b774dedd6843360e3287f6ce7144cdf27 | |
parent | 335a120f7fc249992772fbabe5ad9375443a0848 (diff) | |
download | gcc-d53e8ef490e59839909b536b1cf1d8aaaecfe43f.zip gcc-d53e8ef490e59839909b536b1cf1d8aaaecfe43f.tar.gz gcc-d53e8ef490e59839909b536b1cf1d8aaaecfe43f.tar.bz2 |
cfgrtl.c (rtl_verify_edges): Formatting fix.
* cfgrtl.c (rtl_verify_edges): Formatting fix. If bb->preds has any
EDGE_EH edges, verify they are all EDGE_EH.
From-SVN: r261803
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 31 |
2 files changed, 27 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f7a2ee7..86db35f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index de704ce..19cef22 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -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 |