From: David Malcolm Date: Mon, 25 Aug 2014 20:15:36 +0000 (+0000) Subject: Convert edge_def.insns.r to rtx_insn * X-Git-Tag: releases/gcc-5.1.0~5138 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ffa95c25f3f98adb2a5cdb7419a5ffa1e7bc753;p=thirdparty%2Fgcc.git Convert edge_def.insns.r to rtx_insn * 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 *. From-SVN: r214471 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ec66943cbb3e..64808645a8c0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,22 @@ +2014-08-25 David Malcolm + + * 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 * basic-block.h (struct rtl_bb_info): Strengthen field "footer_" diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 1f23f04fb219..5efe98e7408d 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 16762941a351..6c2b693c3101 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 (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 458278c5e4de..5a7c1351f74b 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 (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 1f73781bb11a..fa77faac51f5 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 e8f040887c5d..9c7b07fcdb49 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 700a99855514..bdd309a62f67 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 88aff5ca554d..2d43bc20c9ba 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; }