gcc/ * basic-block.h (struct edge_def). Strengthen "r" within union edge_def_insns from rtx to rtx_insn *.
* cfgexpand.c (pass_expand::execute): Remove now-redundant cast from rtx to rtx_insn *. Strengthen local "insns" from rtx to rtx_insn *. * cfgrtl.c (commit_one_edge_insertion): Remove now-redundant cast from rtx to rtx_insn *. * cprop.c (find_bypass_set): Strengthen local "insn" from rtx to rtx_insn *. * postreload-gcse.c (reg_killed_on_edge): Likewise. (reg_used_on_edge): Likewise. * tree-cfg.c (gt_ggc_mx): New overload for rtx_insn *&. (gt_pch_nx): New overload for rtx_insn *&. * tree-outof-ssa.c (expand_phi_nodes): Strengthen local "insns" from rtx to rtx_insn *. --- gcc/basic-block.h | 2 +- gcc/cfgexpand.c | 6 +++--- gcc/cfgrtl.c | 4 ++-- gcc/cprop.c | 2 +- gcc/postreload-gcse.c | 4 ++-- gcc/tree-cfg.c | 14 ++++++++++++++ gcc/tree-outof-ssa.c | 4 ++-- 7 files changed, 25 insertions(+), 11 deletions(-) diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 0f55a8b..8d1c924 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -39,7 +39,7 @@ struct GTY((user)) edge_def { /* Instructions queued on the edge. */ union edge_def_insns { gimple_seq g; - rtx r; + rtx_insn *r; } insns; /* Auxiliary info specific to a pass. */ diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 731faeb..51dfe73 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -5856,14 +5856,14 @@ pass_expand::execute (function *fun) { if (e->insns.r) { - rebuild_jump_labels_chain (as_a <rtx_insn *> (e->insns.r)); + rebuild_jump_labels_chain (e->insns.r); /* Put insns after parm birth, but before NOTE_INSNS_FUNCTION_BEG. */ if (e->src == ENTRY_BLOCK_PTR_FOR_FN (fun) && single_succ_p (ENTRY_BLOCK_PTR_FOR_FN (fun))) { - rtx insns = e->insns.r; - e->insns.r = NULL_RTX; + rtx_insn *insns = e->insns.r; + e->insns.r = NULL; if (NOTE_P (parm_birth_insn) && NOTE_KIND (parm_birth_insn) == NOTE_INSN_FUNCTION_BEG) emit_insn_before_noloc (insns, parm_birth_insn, e->dest); diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 1525a75..dc731aa 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1951,8 +1951,8 @@ commit_one_edge_insertion (edge e) basic_block bb; /* Pull the insns off the edge now since the edge might go away. */ - insns = as_a_nullable <rtx_insn *> (e->insns.r); - e->insns.r = NULL_RTX; + insns = e->insns.r; + e->insns.r = NULL; /* Figure out where to put these insns. If the destination has one predecessor, insert there. Except for the exit block. */ diff --git a/gcc/cprop.c b/gcc/cprop.c index 3826b74..5fc5d11 100644 --- a/gcc/cprop.c +++ b/gcc/cprop.c @@ -1472,7 +1472,7 @@ find_bypass_set (int regno, int bb) static bool reg_killed_on_edge (const_rtx reg, const_edge e) { - rtx insn; + rtx_insn *insn; for (insn = e->insns.r; insn; insn = NEXT_INSN (insn)) if (INSN_P (insn) && reg_set_p (reg, insn)) diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c index 73848b7..e4c598a 100644 --- a/gcc/postreload-gcse.c +++ b/gcc/postreload-gcse.c @@ -859,7 +859,7 @@ compute_hash_table (void) static bool reg_killed_on_edge (rtx reg, edge e) { - rtx insn; + rtx_insn *insn; for (insn = e->insns.r; insn; insn = NEXT_INSN (insn)) if (INSN_P (insn) && reg_set_p (reg, insn)) @@ -876,7 +876,7 @@ reg_killed_on_edge (rtx reg, edge e) static bool reg_used_on_edge (rtx reg, edge e) { - rtx insn; + rtx_insn *insn; for (insn = e->insns.r; insn; insn = NEXT_INSN (insn)) if (INSN_P (insn) && reg_overlap_mentioned_p (reg, PATTERN (insn))) diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 126a1a9..db559f0 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -8583,6 +8583,13 @@ extern void gt_ggc_mx (gimple&); extern void gt_ggc_mx (rtx&); extern void gt_ggc_mx (basic_block&); +static void +gt_ggc_mx (rtx_insn *& x) +{ + if (x) + gt_ggc_mx_rtx_def ((void *) x); +} + void gt_ggc_mx (edge_def *e) { @@ -8603,6 +8610,13 @@ extern void gt_pch_nx (gimple&); extern void gt_pch_nx (rtx&); extern void gt_pch_nx (basic_block&); +static void +gt_pch_nx (rtx_insn *& x) +{ + if (x) + gt_pch_nx_rtx_def ((void *) x); +} + void gt_pch_nx (edge_def *e) { diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c index d5a635b..f397f79 100644 --- a/gcc/tree-outof-ssa.c +++ b/gcc/tree-outof-ssa.c @@ -958,9 +958,9 @@ expand_phi_nodes (struct ssaexpand *sa) if (e->insns.r && (e->flags & EDGE_EH) && !single_pred_p (e->dest)) { - rtx insns = e->insns.r; + rtx_insn *insns = e->insns.r; basic_block bb; - e->insns.r = NULL_RTX; + e->insns.r = NULL; bb = split_edge (e); single_pred_edge (bb)->insns.r = insns; } -- 1.8.5.3