]> gcc.gnu.org Git - gcc.git/blobdiff - gcc/loop-doloop.c
backport: basic-block.h: Include vec.h, errors.h.
[gcc.git] / gcc / loop-doloop.c
index e463eeab89963488dcade1c7276ef66150f5b9f9..1b5ca4dc6d22fa2228598bfa79113e7ead9c0ff3 100644 (file)
@@ -292,7 +292,7 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
   if (GET_CODE (counter_reg) == PLUS)
     counter_reg = XEXP (counter_reg, 0);
 
-  count = desc->niter_expr;
+  count = copy_rtx (desc->niter_expr);
   increment_count = false;
   switch (GET_CODE (condition))
     {
@@ -345,7 +345,7 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
 
   if (desc->noloop_assumptions)
     {
-      rtx ass = desc->noloop_assumptions;
+      rtx ass = copy_rtx (desc->noloop_assumptions);
       basic_block preheader = loop_preheader_edge (loop)->src;
       basic_block set_zero
              = loop_split_edge_with (loop_preheader_edge (loop), NULL_RTX);
@@ -358,11 +358,11 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
       /* Expand the condition testing the assumptions and if it does not pass,
         reset the count register to 0.  */
       add_test (XEXP (ass, 0), preheader, set_zero);
-      preheader->succ->flags &= ~EDGE_FALLTHRU;
-      cnt = preheader->succ->count;
-      preheader->succ->probability = 0;
-      preheader->succ->count = 0;
-      irr = preheader->succ->flags & EDGE_IRREDUCIBLE_LOOP;
+      EDGE_SUCC (preheader, 0)->flags &= ~EDGE_FALLTHRU;
+      cnt = EDGE_SUCC (preheader, 0)->count;
+      EDGE_SUCC (preheader, 0)->probability = 0;
+      EDGE_SUCC (preheader, 0)->count = 0;
+      irr = EDGE_SUCC (preheader, 0)->flags & EDGE_IRREDUCIBLE_LOOP;
       te = make_edge (preheader, new_preheader, EDGE_FALLTHRU | irr);
       te->probability = REG_BR_PROB_BASE;
       te->count = cnt;
@@ -374,7 +374,7 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
       for (ass = XEXP (ass, 1); ass; ass = XEXP (ass, 1))
        {
          bb = loop_split_edge_with (te, NULL_RTX);
-         te = bb->succ;
+         te = EDGE_SUCC (bb, 0);
          add_test (XEXP (ass, 0), bb, set_zero);
          make_edge (bb, set_zero, irr);
        }
This page took 0.291331 seconds and 5 git commands to generate.