summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2014-08-28 19:05:44 +0000
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2014-08-28 19:05:44 +0000
commit231c0441dd3c8a970ba03a5418f76303dfed4db2 (patch)
treed3d01491f8685328e98111d3666549b0c3f27a74
parenta4de1c238b07b6b64d0851c8eb4b601be6cb6bec (diff)
downloadgcc-231c0441dd3c8a970ba03a5418f76303dfed4db2.tar.gz
Convert forced_labels from an EXPR_LIST to an INSN_LIST
gcc/ 2014-08-28 David Malcolm <dmalcolm@redhat.com> * function.h (struct expr_status): Convert field "x_forced_labels" from rtx_expr_list * to rtx_insn_list *. * cfgbuild.c (make_edges): Convert local "x" from an rtx_expr_list * to an rtx_insn_list *, replacing use of "element" method with "insn" method. * dwarf2cfi.c (create_trace_edges): Likewise for local "lab". * except.c (sjlj_emit_dispatch_table): Replace use of gen_rtx_EXPR_LIST with gen_rtx_INSN_LIST when prepending to forced_labels. * jump.c (rebuild_jump_labels_1): Convert local "insn" from an rtx_expr_list * to an rtx_insn_list *, replacing use of "element" method with "insn" method. * reload1.c (set_initial_label_offsets): Likewise for local "x". * stmt.c (label_rtx): Strengthen local "ref" from rtx to rtx_insn *, adding a checked cast. Replace use of gen_rtx_EXPR_LIST with gen_rtx_INSN_LIST when prepending it to forced_labels. (expand_label): Likewise for local "label_r". git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214688 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog22
-rw-r--r--gcc/cfgbuild.c4
-rw-r--r--gcc/dwarf2cfi.c4
-rw-r--r--gcc/except.c2
-rw-r--r--gcc/function.h2
-rw-r--r--gcc/jump.c6
-rw-r--r--gcc/reload1.c6
-rw-r--r--gcc/stmt.c8
8 files changed, 38 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9081532fdf9..eebe50127f2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,27 @@
2014-08-28 David Malcolm <dmalcolm@redhat.com>
+ * function.h (struct expr_status): Convert field "x_forced_labels"
+ from rtx_expr_list * to rtx_insn_list *.
+
+ * cfgbuild.c (make_edges): Convert local "x" from an
+ rtx_expr_list * to an rtx_insn_list *, replacing use of
+ "element" method with "insn" method.
+ * dwarf2cfi.c (create_trace_edges): Likewise for local "lab".
+ * except.c (sjlj_emit_dispatch_table): Replace use of
+ gen_rtx_EXPR_LIST with gen_rtx_INSN_LIST when prepending to
+ forced_labels.
+ * jump.c (rebuild_jump_labels_1): Convert local "insn" from an
+ rtx_expr_list * to an rtx_insn_list *, replacing use of
+ "element" method with "insn" method.
+ * reload1.c (set_initial_label_offsets): Likewise for local "x".
+ * stmt.c (label_rtx): Strengthen local "ref" from rtx to
+ rtx_insn *, adding a checked cast. Replace use of
+ gen_rtx_EXPR_LIST with gen_rtx_INSN_LIST when prepending it to
+ forced_labels.
+ (expand_label): Likewise for local "label_r".
+
+2014-08-28 David Malcolm <dmalcolm@redhat.com>
+
* function.h (struct rtl_data): Convert field
"x_nonlocal_goto_handler_labels" from rtx_expr_list * to
rtx_insn_list *.
diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c
index d7fa97a3512..475739d7a42 100644
--- a/gcc/cfgbuild.c
+++ b/gcc/cfgbuild.c
@@ -284,8 +284,8 @@ make_edges (basic_block min, basic_block max, int update_p)
everything on the forced_labels list. */
else if (computed_jump_p (insn))
{
- for (rtx_expr_list *x = forced_labels; x; x = x->next ())
- make_label_edge (edge_cache, bb, x->element (), EDGE_ABNORMAL);
+ for (rtx_insn_list *x = forced_labels; x; x = x->next ())
+ make_label_edge (edge_cache, bb, x->insn (), EDGE_ABNORMAL);
}
/* Returns create an exit out. */
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index 7c495e4876d..8b00b1e89ed 100644
--- a/gcc/dwarf2cfi.c
+++ b/gcc/dwarf2cfi.c
@@ -2309,8 +2309,8 @@ create_trace_edges (rtx insn)
}
else if (computed_jump_p (insn))
{
- for (rtx_expr_list *lab = forced_labels; lab; lab = lab->next ())
- maybe_record_trace_start (lab->element (), insn);
+ for (rtx_insn_list *lab = forced_labels; lab; lab = lab->next ())
+ maybe_record_trace_start (lab->insn (), insn);
}
else if (returnjump_p (insn))
;
diff --git a/gcc/except.c b/gcc/except.c
index 05da989e32a..99a66a00fef 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -1310,7 +1310,7 @@ sjlj_emit_dispatch_table (rtx_code_label *dispatch_label, int num_dispatch)
CFG edges more exactly, we can use the forced_labels list instead. */
LABEL_PRESERVE_P (dispatch_label) = 1;
forced_labels
- = gen_rtx_EXPR_LIST (VOIDmode, dispatch_label, forced_labels);
+ = gen_rtx_INSN_LIST (VOIDmode, dispatch_label, forced_labels);
#endif
/* Load up exc_ptr and filter values from the function context. */
diff --git a/gcc/function.h b/gcc/function.h
index 3921d21f0ae..071f5dd237c 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -135,7 +135,7 @@ struct GTY(()) expr_status {
rtx x_apply_args_value;
/* List of labels that must never be deleted. */
- rtx_expr_list *x_forced_labels;
+ rtx_insn_list *x_forced_labels;
};
typedef struct call_site_record_d *call_site_record;
diff --git a/gcc/jump.c b/gcc/jump.c
index 05c8138db56..a8b7bfb8478 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -74,7 +74,7 @@ static int invert_exp_1 (rtx, rtx);
static void
rebuild_jump_labels_1 (rtx_insn *f, bool count_forced)
{
- rtx_expr_list *insn;
+ rtx_insn_list *insn;
timevar_push (TV_REBUILD_JUMP);
init_label_info (f);
@@ -86,8 +86,8 @@ rebuild_jump_labels_1 (rtx_insn *f, bool count_forced)
if (count_forced)
for (insn = forced_labels; insn; insn = insn->next ())
- if (LABEL_P (insn->element ()))
- LABEL_NUSES (insn->element ())++;
+ if (LABEL_P (insn->insn ()))
+ LABEL_NUSES (insn->insn ())++;
timevar_pop (TV_REBUILD_JUMP);
}
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 0a01b1b503e..153c284ff1d 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -3911,9 +3911,9 @@ set_initial_label_offsets (void)
{
memset (offsets_known_at, 0, num_labels);
- for (rtx_expr_list *x = forced_labels; x; x = x->next ())
- if (x->element ())
- set_label_offsets (x->element (), NULL, 1);
+ for (rtx_insn_list *x = forced_labels; x; x = x->next ())
+ if (x->insn ())
+ set_label_offsets (x->insn (), NULL, 1);
for (rtx_insn_list *x = nonlocal_goto_handler_labels; x; x = x->next ())
if (x->insn ())
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 1cbd63d53a2..70dad0cdb09 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -141,12 +141,12 @@ label_rtx (tree label)
rtx
force_label_rtx (tree label)
{
- rtx ref = label_rtx (label);
+ rtx_insn *ref = as_a <rtx_insn *> (label_rtx (label));
tree function = decl_function_context (label);
gcc_assert (function);
- forced_labels = gen_rtx_EXPR_LIST (VOIDmode, ref, forced_labels);
+ forced_labels = gen_rtx_INSN_LIST (VOIDmode, ref, forced_labels);
return ref;
}
@@ -176,7 +176,7 @@ emit_jump (rtx label)
void
expand_label (tree label)
{
- rtx label_r = label_rtx (label);
+ rtx_insn *label_r = as_a <rtx_insn *> (label_rtx (label));
do_pending_stack_adjust ();
emit_label (label_r);
@@ -192,7 +192,7 @@ expand_label (tree label)
}
if (FORCED_LABEL (label))
- forced_labels = gen_rtx_EXPR_LIST (VOIDmode, label_r, forced_labels);
+ forced_labels = gen_rtx_INSN_LIST (VOIDmode, label_r, forced_labels);
if (DECL_NONLOCAL (label) || FORCED_LABEL (label))
maybe_set_first_label_num (label_r);