hw-doloop: Use rtx_insn (touches config/bfin/bfin.c)
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 22 Aug 2014 17:05:45 +0000 (17:05 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Fri, 22 Aug 2014 17:05:45 +0000 (17:05 +0000)
gcc/
* hw-doloop.h (struct hwloop_info_d): Strengthen fields
"last_insn", "loop_end" from rtx to rtx_insn *.

* hw-doloop.c (scan_loop): Likewise for local "insn".
(discover_loop): Likewise for param "tail_insn".
(discover_loops): Likewise for local "tail".

* config/bfin/bfin.c (hwloop_optimize): For now, add a checked
cast to rtx_insn * when assigning from an rtx local to a
hwloop_info's "last_insn" field.

From-SVN: r214334

gcc/ChangeLog
gcc/config/bfin/bfin.c
gcc/hw-doloop.c
gcc/hw-doloop.h

index 66642ffc28145cb174d6b1c753ac838d9cfa4cac..1f9ef874bcca0b5dccef6bcbda6735bd773a7f1f 100644 (file)
@@ -1,3 +1,16 @@
+2014-08-22  David Malcolm  <dmalcolm@redhat.com>
+
+       * hw-doloop.h (struct hwloop_info_d): Strengthen fields
+       "last_insn", "loop_end" from rtx to rtx_insn *.
+
+       * hw-doloop.c (scan_loop): Likewise for local "insn".
+       (discover_loop): Likewise for param "tail_insn".
+       (discover_loops): Likewise for local "tail".
+
+       * config/bfin/bfin.c (hwloop_optimize): For now, add a checked
+       cast to rtx_insn * when assigning from an rtx local to a
+       hwloop_info's "last_insn" field.
+
 2014-08-22  David Malcolm  <dmalcolm@redhat.com>
 
        * haifa-sched.c (bb_header): Strengthen from rtx * to rtx_insn **.
index 5800ad5ae8e417bef21ca36635861e8348d5edc3..07edad2a62fbcedc3df237302b373d0797cc7cb7 100644 (file)
@@ -3655,7 +3655,7 @@ hwloop_optimize (hwloop_info loop)
       last_insn = emit_insn_after (gen_forced_nop (), last_insn);
     }
 
-  loop->last_insn = last_insn;
+  loop->last_insn = safe_as_a <rtx_insn *> (last_insn);
 
   /* The loop is good for replacement.  */
   start_label = loop->start_label;
index 9ab7e65db5f4d728bc51049740c43dd0e77bd7a6..131e71d04fc6592782df53d032363cf3653196ed 100644 (file)
@@ -94,7 +94,7 @@ scan_loop (hwloop_info loop)
 
   for (ix = 0; loop->blocks.iterate (ix, &bb); ix++)
     {
-      rtx insn;
+      rtx_insn *insn;
       edge e;
       edge_iterator ei;
 
@@ -232,7 +232,7 @@ add_forwarder_blocks (hwloop_info loop)
    the expected use; targets that call into this code usually replace the
    loop counter with a different special register.  */
 static void
-discover_loop (hwloop_info loop, basic_block tail_bb, rtx tail_insn, rtx reg)
+discover_loop (hwloop_info loop, basic_block tail_bb, rtx_insn *tail_insn, rtx reg)
 {
   bool found_tail;
   unsigned dwork = 0;
@@ -359,7 +359,7 @@ discover_loops (bitmap_obstack *loop_stack, struct hw_doloop_hooks *hooks)
      structure and add the head block to the work list. */
   FOR_EACH_BB_FN (bb, cfun)
     {
-      rtx tail = BB_END (bb);
+      rtx_insn *tail = BB_END (bb);
       rtx insn, reg;
 
       while (tail && NOTE_P (tail) && tail != BB_HEAD (bb))
index 9fc3c15e3a195bad76a4064c4d706ef31809e072..a98f213b0d42026d3a5877cab3b77978fe2d6c74 100644 (file)
@@ -66,10 +66,10 @@ struct GTY (()) hwloop_info_d
   basic_block successor;
 
   /* The last instruction in the tail.  */
-  rtx last_insn;
+  rtx_insn *last_insn;
 
   /* The loop_end insn.  */
-  rtx loop_end;
+  rtx_insn *loop_end;
 
   /* The iteration register.  */
   rtx iter_reg;