diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2017-12-20 14:48:34 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2017-12-20 14:48:34 +0000 |
commit | 67a8d7199fe4e474f7bd565161fa2f27d59969fc (patch) | |
tree | 6093bd1b061517b897df00a25e329bbff6c51b48 /gcc/gimple-iterator.h | |
parent | 8a91d5455313fb3c4fc07935d848921012cb297f (diff) | |
download | gcc-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.h | 15 |
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; } |