Convert forced_labels from an EXPR_LIST to an INSN_LIST
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 28 Aug 2014 19:05:44 +0000 (19:05 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Thu, 28 Aug 2014 19:05:44 +0000 (19:05 +0000)
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".

From-SVN: r214688

gcc/ChangeLog
gcc/cfgbuild.c
gcc/dwarf2cfi.c
gcc/except.c
gcc/function.h
gcc/jump.c
gcc/reload1.c
gcc/stmt.c

index 9081532fdf9b8086f3f3b198e45bbaac331230c9..eebe50127f2fdddde78c1f6dcd10916f1d6aad1a 100644 (file)
@@ -1,3 +1,25 @@
+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
index d7fa97a3512133119947626c6e421f694e689544..475739d7a425e2036033a72aedfcd334b647fedd 100644 (file)
@@ -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.  */
index 7c495e4876d14801f915e03cce94eda5c17d1b6f..8b00b1e89ed78672dba3f3bc24dd3a4261ad30c9 100644 (file)
@@ -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))
        ;
index 05da989e32a8bec443ada9ed8a2dc91f723e5a10..99a66a00fef5877d9b74aa09348a230d8abb24ca 100644 (file)
@@ -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.  */
index 3921d21f0aee0776123030f3fab37ff8eaba6042..071f5dd237c1c512111ff3fcf0339674998826da 100644 (file)
@@ -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;
index 05c8138db56476c1a42ed7b4163d8f85497f3918..a8b7bfb8478005ce17fc3cf8ba074e77d1f6e953 100644 (file)
@@ -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);
 }
 
index 0a01b1b503e0419d774435ef178f64ed23cc5471..153c284ff1d4ea499136d3c55ce25ec4d06fecca 100644 (file)
@@ -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 ())
index 1cbd63d53a21c17627983b4696ddbdec43dd8328..70dad0cdb09fc6c93b73e0f34af077a9c4b1dacf 100644 (file)
@@ -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);