diff options
-rw-r--r-- | gcc/ChangeLog | 19 | ||||
-rw-r--r-- | gcc/basic-block.h | 2 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 6 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 4 | ||||
-rw-r--r-- | gcc/cprop.c | 2 | ||||
-rw-r--r-- | gcc/postreload-gcse.c | 4 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 14 | ||||
-rw-r--r-- | gcc/tree-outof-ssa.c | 4 |
8 files changed, 44 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ec66943cbb3..64808645a8c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,24 @@ 2014-08-25 David Malcolm <dmalcolm@redhat.com> + * 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 *. + +2014-08-25 David Malcolm <dmalcolm@redhat.com> + * basic-block.h (struct rtl_bb_info): Strengthen field "footer_" from rtx to rtx_insn *. (BB_FOOTER): Replace function with access macro. diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 1f23f04fb21..5efe98e7408 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 16762941a35..6c2b693c310 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -5865,14 +5865,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 458278c5e4d..5a7c1351f74 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1950,8 +1950,8 @@ commit_one_edge_insertion (edge e) basic_block bb; /* Pull the insns off the edge now since the edge might go away. */ - insns = safe_as_a <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 1f73781bb11..fa77faac51f 100644 --- a/gcc/cprop.c +++ b/gcc/cprop.c @@ -1470,7 +1470,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 e8f040887c5..9c7b07fcdb4 100644 --- a/gcc/postreload-gcse.c +++ b/gcc/postreload-gcse.c @@ -860,7 +860,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)) @@ -877,7 +877,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 700a9985551..bdd309a62f6 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -8611,6 +8611,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) { @@ -8631,6 +8638,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 88aff5ca554..2d43bc20c9b 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; } |