X-Git-Url: https://gcc.gnu.org/git/?a=blobdiff_plain;f=gcc%2Floop-doloop.c;h=1b5ca4dc6d22fa2228598bfa79113e7ead9c0ff3;hb=628f6a4e7c8e168256fe257a0dfc5f4fddda900a;hp=e463eeab89963488dcade1c7276ef66150f5b9f9;hpb=8127d0e073d0d792628af20a2df90ddf5177c623;p=gcc.git diff --git a/gcc/loop-doloop.c b/gcc/loop-doloop.c index e463eeab8996..1b5ca4dc6d22 100644 --- a/gcc/loop-doloop.c +++ b/gcc/loop-doloop.c @@ -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); }