summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog19
-rw-r--r--gcc/basic-block.h2
-rw-r--r--gcc/cfgexpand.c6
-rw-r--r--gcc/cfgrtl.c4
-rw-r--r--gcc/cprop.c2
-rw-r--r--gcc/postreload-gcse.c4
-rw-r--r--gcc/tree-cfg.c14
-rw-r--r--gcc/tree-outof-ssa.c4
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;
}