From 7bd169c861d0e696db036753c2935f86583fef49 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 13 Dec 2017 19:48:23 +0100 Subject: tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts with the exception of debug begin stmt markers appear... * tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts with the exception of debug begin stmt markers appear before labels. From-SVN: r255611 --- gcc/tree-cfg.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'gcc/tree-cfg.c') diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 9a4e3e2..75a0a30 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -5380,6 +5380,7 @@ verify_gimple_in_cfg (struct function *fn, bool verify_nothrow) err |= err2; } + bool label_allowed = true; for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) { gimple *stmt = gsi_stmt (gsi); @@ -5396,6 +5397,19 @@ verify_gimple_in_cfg (struct function *fn, bool verify_nothrow) err2 = true; } + /* Labels may be preceded only by debug markers, not debug bind + or source bind or any other statements. */ + if (gimple_code (stmt) == GIMPLE_LABEL) + { + if (!label_allowed) + { + error ("gimple label in the middle of a basic block"); + err2 = true; + } + } + else if (!gimple_debug_begin_stmt_p (stmt)) + label_allowed = false; + err2 |= verify_gimple_stmt (stmt); err2 |= verify_location (&blocks, gimple_location (stmt)); -- cgit v1.1