]> gcc.gnu.org Git - gcc.git/blobdiff - gcc/loop-doloop.c
New syntax for -fsanitize-recover.
[gcc.git] / gcc / loop-doloop.c
index 0e843938134ec0a3189823902730562b59156282..84a41943e14467c3b86c1a7206f594b865c19dcd 100644 (file)
@@ -33,6 +33,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "params.h"
 #include "target.h"
 #include "dumpfile.h"
+#include "loop-unroll.h"
 
 /* This module is used to modify loops with a determinable number of
    iterations to use special low-overhead looping instructions.
@@ -261,7 +262,7 @@ static bool
 doloop_valid_p (struct loop *loop, struct niter_desc *desc)
 {
   basic_block *body = get_loop_body (loop), bb;
-  rtx insn;
+  rtx_insn *insn;
   unsigned i;
   bool result = true;
 
@@ -336,7 +337,8 @@ cleanup:
 static bool
 add_test (rtx cond, edge *e, basic_block dest)
 {
-  rtx seq, jump, label;
+  rtx_insn *seq, *jump;
+  rtx label;
   enum machine_mode mode;
   rtx op0 = XEXP (cond, 0), op1 = XEXP (cond, 1);
   enum rtx_code code = GET_CODE (cond);
@@ -401,8 +403,8 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
 {
   rtx counter_reg;
   rtx tmp, noloop = NULL_RTX;
-  rtx sequence;
-  rtx jump_insn;
+  rtx_insn *sequence;
+  rtx_insn *jump_insn;
   rtx jump_label;
   int nonneg = 0;
   bool increment_count;
@@ -712,10 +714,12 @@ doloop_optimize (struct loop *loop)
   doloop_pat = doloop_seq;
   if (INSN_P (doloop_pat))
     {
-      while (NEXT_INSN (doloop_pat) != NULL_RTX)
-       doloop_pat = NEXT_INSN (doloop_pat);
-      if (!JUMP_P (doloop_pat))
-       doloop_pat = NULL_RTX;
+      rtx_insn *doloop_insn = as_a <rtx_insn *> (doloop_pat);
+      while (NEXT_INSN (doloop_insn) != NULL_RTX)
+       doloop_insn = NEXT_INSN (doloop_insn);
+      if (!JUMP_P (doloop_insn))
+       doloop_insn = NULL;
+      doloop_pat = doloop_insn;
     }
 
   if (! doloop_pat
This page took 0.027401 seconds and 5 git commands to generate.