aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-06-09 10:00:30 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-06-09 10:00:30 -0700
commit62b857eabfaedc1e5f9c824d0d508ac4a6005d9b (patch)
tree3bd1558b7817ffa9d7cbc42664788157968cb92b /gcc/tree-cfg.c
parent93a9f7d6c63e39974dd0f77ba42af58f71671ad3 (diff)
downloadgcc-62b857eabfaedc1e5f9c824d0d508ac4a6005d9b.zip
gcc-62b857eabfaedc1e5f9c824d0d508ac4a6005d9b.tar.gz
gcc-62b857eabfaedc1e5f9c824d0d508ac4a6005d9b.tar.bz2
basic-block.h (struct edge_def): Add goto_locus.
* basic-block.h (struct edge_def): Add goto_locus. * tree-cfg.c (make_goto_expr_edges): Set it. (disband_implicit_edges): Use it. * tree-pretty-print.c (dump_implicit_edges): Print it. From-SVN: r82842
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 65e8e89ab..d5ff919 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -680,7 +680,8 @@ make_goto_expr_edges (basic_block bb)
/* A GOTO to a local label creates normal edges. */
if (simple_goto_p (goto_t))
{
- make_edge (bb, label_to_block (dest), EDGE_FALLTHRU);
+ edge e = make_edge (bb, label_to_block (dest), EDGE_FALLTHRU);
+ e->goto_locus = EXPR_LOCUS (goto_t);
bsi_remove (&last);
return;
}
@@ -2640,8 +2641,7 @@ disband_implicit_edges (void)
if (e->flags & EDGE_FALLTHRU)
break;
- if (!e
- || e->dest == bb->next_bb)
+ if (!e || e->dest == bb->next_bb)
continue;
if (e->dest == EXIT_BLOCK_PTR)
@@ -2658,9 +2658,9 @@ disband_implicit_edges (void)
&& TREE_CODE (forward) == GOTO_EXPR)
label = GOTO_DESTINATION (forward);
- bsi_insert_after (&last,
- build1 (GOTO_EXPR, void_type_node, label),
- BSI_NEW_STMT);
+ stmt = build1 (GOTO_EXPR, void_type_node, label);
+ SET_EXPR_LOCUS (stmt, e->goto_locus);
+ bsi_insert_after (&last, stmt, BSI_NEW_STMT);
e->flags &= ~EDGE_FALLTHRU;
}
}