Various condition-handling calls
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 26 Aug 2014 19:38:42 +0000 (19:38 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Tue, 26 Aug 2014 19:38:42 +0000 (19:38 +0000)
gcc/
2014-08-26  David Malcolm  <dmalcolm@redhat.com>

* rtl.h (canonicalize_condition): Strengthen param 1 from rtx to
rtx_insn * and param 4 from rtx * to rtx_insn **.
(get_condition): Strengthen param 1 from rtx to rtx_insn * and
param 2 from rtx * to rtx_insn **.

* df.h (can_move_insns_across): Strengthen params 1-4 from rtx to
rtx_insn * and final param from rtx * to rtx_insn **.

* cfgcleanup.c (try_head_merge_bb): Strengthen local "move_before"
from rtx to rtx_insn *.
(try_head_merge_bb): Likewise for both locals named "move_upto".
* df-problems.c (can_move_insns_across): Likewise for params
"from", "to", "across_from", "across_to" and locals "insn",
"next", "max_to".  Strengthen param "pmove_upto" from rtx * to
rtx_insn **.
* ifcvt.c (struct noce_if_info): Strengthen field "cond_earliest"
from rtx to rtx_insn *.
(noce_get_alt_condition): Strengthen param "earliest" from rtx *
to rtx_insn **.  Strengthen local "insn" from rtx to rtx_insn *.
(noce_try_minmax): Strengthen locals "earliest", "seq" from rtx to
rtx_insn *.
(noce_try_abs): Likewise.
(noce_get_condition): Likewise for param "jump".  Strengthen param
"earliest" from rtx * to rtx_insn **.
(noce_find_if_block): Strengthen local "cond_earliest" from rtx to
rtx_insn *.
(find_cond_trap): Likewise.
(dead_or_predicable): Likewise for local "earliest".
* loop-iv.c (check_simple_exit): Likewise for local "at".  Add
checked cast.
* rtlanal.c (canonicalize_condition): Likewise for param "insn"
and local "prev".  Strengthen param "earliest" from rtx * to
rtx_insn **.
(get_condition): Strengthen param "jump" from rtx to rtx_insn *
Strengthen param "earliest" from rtx * to rtx_insn **.

From-SVN: r214542

gcc/ChangeLog
gcc/cfgcleanup.c
gcc/df-problems.c
gcc/df.h
gcc/ifcvt.c
gcc/loop-iv.c
gcc/rtl.h
gcc/rtlanal.c

index 3bfc551606b094cb516931ec6babaf4d049fa9c9..49cd7aeb9d32e31da376cc034d08a9e7dbd73c62 100644 (file)
@@ -1,3 +1,41 @@
+2014-08-26  David Malcolm  <dmalcolm@redhat.com>
+
+       * rtl.h (canonicalize_condition): Strengthen param 1 from rtx to
+       rtx_insn * and param 4 from rtx * to rtx_insn **.
+       (get_condition): Strengthen param 1 from rtx to rtx_insn * and
+       param 2 from rtx * to rtx_insn **.
+
+       * df.h (can_move_insns_across): Strengthen params 1-4 from rtx to
+       rtx_insn * and final param from rtx * to rtx_insn **.
+
+       * cfgcleanup.c (try_head_merge_bb): Strengthen local "move_before"
+       from rtx to rtx_insn *.
+       (try_head_merge_bb): Likewise for both locals named "move_upto".
+       * df-problems.c (can_move_insns_across): Likewise for params
+       "from", "to", "across_from", "across_to" and locals "insn",
+       "next", "max_to".  Strengthen param "pmove_upto" from rtx * to
+       rtx_insn **.
+       * ifcvt.c (struct noce_if_info): Strengthen field "cond_earliest"
+       from rtx to rtx_insn *.
+       (noce_get_alt_condition): Strengthen param "earliest" from rtx *
+       to rtx_insn **.  Strengthen local "insn" from rtx to rtx_insn *.
+       (noce_try_minmax): Strengthen locals "earliest", "seq" from rtx to
+       rtx_insn *.
+       (noce_try_abs): Likewise.
+       (noce_get_condition): Likewise for param "jump".  Strengthen param
+       "earliest" from rtx * to rtx_insn **.
+       (noce_find_if_block): Strengthen local "cond_earliest" from rtx to
+       rtx_insn *.
+       (find_cond_trap): Likewise.
+       (dead_or_predicable): Likewise for local "earliest".
+       * loop-iv.c (check_simple_exit): Likewise for local "at".  Add
+       checked cast.
+       * rtlanal.c (canonicalize_condition): Likewise for param "insn"
+       and local "prev".  Strengthen param "earliest" from rtx * to
+       rtx_insn **.
+       (get_condition): Strengthen param "jump" from rtx to rtx_insn *
+       Strengthen param "earliest" from rtx * to rtx_insn **.
+
 2014-08-26  David Malcolm  <dmalcolm@redhat.com>
 
        * fwprop.c (local_ref_killed_between_p): Strengthen params "from",
index 96ab4aa877ab3dca6f4717130201d1749889f0fb..2264b4bfe54acdd90688381691a2063e88efd6a4 100644 (file)
@@ -2291,7 +2291,8 @@ try_head_merge_bb (basic_block bb)
   bool changed, moveall;
   unsigned ix;
   rtx_insn *e0_last_head;
-  rtx cond, move_before;
+  rtx cond;
+  rtx_insn *move_before;
   unsigned nedges = EDGE_COUNT (bb->succs);
   rtx_insn *jump = BB_END (bb);
   regset live, live_union;
@@ -2455,7 +2456,7 @@ try_head_merge_bb (basic_block bb)
      with the final move.  */
   if (final_dest_bb != NULL)
     {
-      rtx move_upto;
+      rtx_insn *move_upto;
 
       moveall = can_move_insns_across (currptr[0], e0_last_head, move_before,
                                       jump, e0->dest, live_union,
@@ -2490,7 +2491,7 @@ try_head_merge_bb (basic_block bb)
 
   do
     {
-      rtx move_upto;
+      rtx_insn *move_upto;
       moveall = can_move_insns_across (currptr[0], e0_last_head,
                                       move_before, jump, e0->dest, live_union,
                                       NULL, &move_upto);
index 65f9b4cb047db1176594934077e0ae3ff3fa709e..305ed5d9da4cfd828b49101d48421f3dcf04fb71 100644 (file)
@@ -3664,11 +3664,12 @@ simulate_backwards_to_point (basic_block bb, regset live, rtx point)
    is set to point at the last moveable insn in such a case.  */
 
 bool
-can_move_insns_across (rtx from, rtx to, rtx across_from, rtx across_to,
+can_move_insns_across (rtx_insn *from, rtx_insn *to,
+                      rtx_insn *across_from, rtx_insn *across_to,
                       basic_block merge_bb, regset merge_live,
-                      regset other_branch_live, rtx *pmove_upto)
+                      regset other_branch_live, rtx_insn **pmove_upto)
 {
-  rtx insn, next, max_to;
+  rtx_insn *insn, *next, *max_to;
   bitmap merge_set, merge_use, local_merge_live;
   bitmap test_set, test_use;
   unsigned i, fail = 0;
@@ -3678,7 +3679,7 @@ can_move_insns_across (rtx from, rtx to, rtx across_from, rtx across_to,
   bool trapping_insns_in_across = false;
 
   if (pmove_upto != NULL)
-    *pmove_upto = NULL_RTX;
+    *pmove_upto = NULL;
 
   /* Find real bounds, ignoring debug insns.  */
   while (!NONDEBUG_INSN_P (from) && from != to)
@@ -3754,7 +3755,7 @@ can_move_insns_across (rtx from, rtx to, rtx across_from, rtx across_to,
      the first insn in MERGE that sets a register in TEST_USE, or uses
      a register in TEST_SET.  We also check for calls, trapping operations,
      and memory references.  */
-  max_to = NULL_RTX;
+  max_to = NULL;
   for (insn = from; ; insn = next)
     {
       if (CALL_P (insn))
index c20f8a0ea84a54cd43921fa11e2974bfbf63f912..2699b5b5f55b68a3383e996789fa1897da0e2b06 100644 (file)
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -1018,8 +1018,10 @@ extern void df_simulate_finalize_backwards (basic_block, bitmap);
 extern void df_simulate_initialize_forwards (basic_block, bitmap);
 extern void df_simulate_one_insn_forwards (basic_block, rtx, bitmap);
 extern void simulate_backwards_to_point (basic_block, regset, rtx);
-extern bool can_move_insns_across (rtx, rtx, rtx, rtx, basic_block, regset,
-                                  regset, rtx *);
+extern bool can_move_insns_across (rtx_insn *, rtx_insn *,
+                                  rtx_insn *, rtx_insn *,
+                                  basic_block, regset,
+                                  regset, rtx_insn **);
 /* Functions defined in df-scan.c.  */
 
 extern void df_scan_alloc (bitmap);
index d5ae98b99622ce8e853c7dc51d79e5f4389e3fef..94b96f33d14c81891a067c71979498137ac03542 100644 (file)
@@ -92,7 +92,7 @@ static rtx find_active_insn_after (basic_block, rtx);
 static basic_block block_fallthru (basic_block);
 static int cond_exec_process_insns (ce_if_block *, rtx, rtx, rtx, int, int);
 static rtx cond_exec_get_condition (rtx);
-static rtx noce_get_condition (rtx, rtx *, bool);
+static rtx noce_get_condition (rtx_insn *, rtx_insn **, bool);
 static int noce_operand_ok (const_rtx);
 static void merge_if_block (ce_if_block *);
 static int find_cond_trap (basic_block, edge, edge);
@@ -783,7 +783,7 @@ struct noce_if_info
   rtx cond;
 
   /* New insns should be inserted before this one.  */
-  rtx cond_earliest;
+  rtx_insn *cond_earliest;
 
   /* Insns in the THEN and ELSE block.  There is always just this
      one insns in those blocks.  The insns are single_set insns.
@@ -819,7 +819,7 @@ static rtx noce_emit_cmove (struct noce_if_info *, rtx, enum rtx_code, rtx,
                            rtx, rtx, rtx);
 static int noce_try_cmove (struct noce_if_info *);
 static int noce_try_cmove_arith (struct noce_if_info *);
-static rtx noce_get_alt_condition (struct noce_if_info *, rtx, rtx *);
+static rtx noce_get_alt_condition (struct noce_if_info *, rtx, rtx_insn **);
 static int noce_try_minmax (struct noce_if_info *);
 static int noce_try_abs (struct noce_if_info *);
 static int noce_try_sign_mask (struct noce_if_info *);
@@ -1754,9 +1754,10 @@ noce_try_cmove_arith (struct noce_if_info *if_info)
 
 static rtx
 noce_get_alt_condition (struct noce_if_info *if_info, rtx target,
-                       rtx *earliest)
+                       rtx_insn **earliest)
 {
-  rtx cond, set, insn;
+  rtx cond, set;
+  rtx_insn *insn;
   int reverse;
 
   /* If target is already mentioned in the known condition, return it.  */
@@ -1906,8 +1907,8 @@ noce_get_alt_condition (struct noce_if_info *if_info, rtx target,
 static int
 noce_try_minmax (struct noce_if_info *if_info)
 {
-  rtx cond, earliest, target;
-  rtx_insn *seq;
+  rtx cond, target;
+  rtx_insn *earliest, *seq;
   enum rtx_code code, op;
   int unsignedp;
 
@@ -2002,8 +2003,8 @@ noce_try_minmax (struct noce_if_info *if_info)
 static int
 noce_try_abs (struct noce_if_info *if_info)
 {
-  rtx cond, earliest, target, a, b, c;
-  rtx_insn *seq;
+  rtx cond, target, a, b, c;
+  rtx_insn *earliest, *seq;
   int negate;
   bool one_cmpl = false;
 
@@ -2330,7 +2331,7 @@ noce_try_bitop (struct noce_if_info *if_info)
    THEN block of the caller, and we have to reverse the condition.  */
 
 static rtx
-noce_get_condition (rtx jump, rtx *earliest, bool then_else_reversed)
+noce_get_condition (rtx_insn *jump, rtx_insn **earliest, bool then_else_reversed)
 {
   rtx cond, set, tmp;
   bool reverse;
@@ -3044,7 +3045,7 @@ noce_find_if_block (basic_block test_bb, edge then_edge, edge else_edge,
   bool then_else_reversed = false;
   rtx_insn *jump;
   rtx cond;
-  rtx cond_earliest;
+  rtx_insn *cond_earliest;
   struct noce_if_info if_info;
 
   /* We only ever should get here before reload.  */
@@ -3698,7 +3699,8 @@ find_cond_trap (basic_block test_bb, edge then_edge, edge else_edge)
   basic_block else_bb = else_edge->dest;
   basic_block other_bb, trap_bb;
   rtx_insn *trap, *jump;
-  rtx cond, cond_earliest, seq;
+  rtx cond, seq;
+  rtx_insn *cond_earliest;
   enum rtx_code code;
 
   /* Locate the block with the trap instruction.  */
@@ -4134,7 +4136,8 @@ dead_or_predicable (basic_block test_bb, basic_block merge_bb,
 {
   basic_block new_dest = dest_edge->dest;
   rtx_insn *head, *end, *jump;
-  rtx earliest = NULL_RTX, old_dest;
+  rtx_insn *earliest = NULL;
+  rtx old_dest;
   bitmap merge_set = NULL;
   /* Number of pending changes.  */
   int n_validated_changes = 0;
index 7ff1accccc6169cfd7b5cd9ff8658a13aff49d3f..b83f8f89ee3c3c2f3601e87b8d7a531bbb38eb27 100644 (file)
@@ -2893,7 +2893,8 @@ static void
 check_simple_exit (struct loop *loop, edge e, struct niter_desc *desc)
 {
   basic_block exit_bb;
-  rtx condition, at;
+  rtx condition;
+  rtx_insn *at;
   edge ein;
 
   exit_bb = e->src;
@@ -2931,8 +2932,7 @@ check_simple_exit (struct loop *loop, edge e, struct niter_desc *desc)
 
   /* Check that we are able to determine number of iterations and fill
      in information about it.  */
-  iv_number_of_iterations (loop, safe_as_a <rtx_insn *> (at),
-                          condition, desc);
+  iv_number_of_iterations (loop, at, condition, desc);
 }
 
 /* Finds a simple exit of LOOP and stores its description into DESC.  */
index 12b9147ed75d7901ae7722d54b369d5d5af66cd3..edc6317a9a62a8aeab888494963826d1b09477e0 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2672,11 +2672,12 @@ extern int insn_rtx_cost (rtx, bool);
 
 /* Given an insn and condition, return a canonical description of
    the test being made.  */
-extern rtx canonicalize_condition (rtx, rtx, int, rtx *, rtx, int, int);
+extern rtx canonicalize_condition (rtx_insn *, rtx, int, rtx_insn **, rtx,
+                                  int, int);
 
 /* Given a JUMP_INSN, return a canonical description of the test
    being made.  */
-extern rtx get_condition (rtx, rtx *, int, int);
+extern rtx get_condition (rtx_insn *, rtx_insn **, int, int);
 
 /* Information about a subreg of a hard register.  */
 struct subreg_info
index 996e0f78759c6fb25ae30932783be15e3dffeeb3..cf04709bb5bce5cdd63cc94664328147e921f09f 100644 (file)
@@ -4985,11 +4985,12 @@ insn_rtx_cost (rtx pat, bool speed)
    and at INSN.  */
 
 rtx
-canonicalize_condition (rtx insn, rtx cond, int reverse, rtx *earliest,
+canonicalize_condition (rtx_insn *insn, rtx cond, int reverse,
+                       rtx_insn **earliest,
                        rtx want_reg, int allow_cc_mode, int valid_at_insn_p)
 {
   enum rtx_code code;
-  rtx prev = insn;
+  rtx_insn *prev = insn;
   const_rtx set;
   rtx tem;
   rtx op0, op1;
@@ -5254,7 +5255,8 @@ canonicalize_condition (rtx insn, rtx cond, int reverse, rtx *earliest,
    VALID_AT_INSN_P is the same as for canonicalize_condition.  */
 
 rtx
-get_condition (rtx jump, rtx *earliest, int allow_cc_mode, int valid_at_insn_p)
+get_condition (rtx_insn *jump, rtx_insn **earliest, int allow_cc_mode,
+              int valid_at_insn_p)
 {
   rtx cond;
   int reverse;