aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-iterator.h
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2017-12-20 14:48:34 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2017-12-20 14:48:34 +0000
commit67a8d7199fe4e474f7bd565161fa2f27d59969fc (patch)
tree6093bd1b061517b897df00a25e329bbff6c51b48 /gcc/gimple-iterator.h
parent8a91d5455313fb3c4fc07935d848921012cb297f (diff)
downloadgcc-67a8d7199fe4e474f7bd565161fa2f27d59969fc.zip
gcc-67a8d7199fe4e474f7bd565161fa2f27d59969fc.tar.gz
gcc-67a8d7199fe4e474f7bd565161fa2f27d59969fc.tar.bz2
[SFN] debug markers before labels no more
Make sure that gimple and RTL IRs don't have debug markers before labels. When we build the CFG, we move labels before any markers appearing before them. Then, make sure we don't mistakenly reintroduce them. This reverts some of the complexity that had been brought about by the initial SFN patches. for gcc/ChangeLog PR bootstrap/83396 * cfgexpand.c (label_rtx_for_bb): Revert SFN changes that allowed debug stmts before labels. (expand_gimple_basic_block): Likewise. * gimple-iterator.c (gimple_find_edge_insert_loc): Likewise. * gimple-iterator.h (gsi_after_labels): Likewise. * tree-cfgcleanup (remove_forwarder_block): Likewise, but rename reused variable, and simplify using gsi_move_before. * tree-ssa-tail-merge.c (find_duplicate): Likewise. * tree-cfg.c (make_edges, cleanup_dead_labels): Likewise. (gimple_can_merge_blocks_p, verify_gimple_in_cfg): Likewise. (gimple_verify_flow_info, gimple_block_label): Likewise. (make_blocks): Move debug markers after adjacent labels. * cfgrtl.c (skip_insns_after_block): Revert SFN changes that allowed debug insns outside blocks. * df-scan.c (df_insn_delete): Likewise. * lra-constraints.c (update_ebb_live_info): Likewise. * var-tracking.c (get_first_insn, vt_emit_notes): Likewise. (vt_initialize, delete_vta_debug_insns): Likewise. (reemit_marker_as_note): Drop BB parm. Adjust callers. From-SVN: r255895
Diffstat (limited to 'gcc/gimple-iterator.h')
-rw-r--r--gcc/gimple-iterator.h15
1 files changed, 4 insertions, 11 deletions
diff --git a/gcc/gimple-iterator.h b/gcc/gimple-iterator.h
index 167edc1..e655ef8 100644
--- a/gcc/gimple-iterator.h
+++ b/gcc/gimple-iterator.h
@@ -213,24 +213,17 @@ gsi_stmt (gimple_stmt_iterator i)
}
/* Return a block statement iterator that points to the first
- non-label statement in block BB. Skip debug stmts only if they
- precede labels. */
+ non-label statement in block BB. */
static inline gimple_stmt_iterator
gsi_after_labels (basic_block bb)
{
gimple_stmt_iterator gsi = gsi_start_bb (bb);
- for (gimple_stmt_iterator gskip = gsi;
- !gsi_end_p (gskip); )
+ for (; !gsi_end_p (gsi); )
{
- if (is_gimple_debug (gsi_stmt (gskip)))
- gsi_next (&gskip);
- else if (gimple_code (gsi_stmt (gskip)) == GIMPLE_LABEL)
- {
- gsi_next (&gskip);
- gsi = gskip;
- }
+ if (gimple_code (gsi_stmt (gsi)) == GIMPLE_LABEL)
+ gsi_next (&gsi);
else
break;
}