diff options
Diffstat (limited to 'gcc/modulo-sched.c')
-rw-r--r-- | gcc/modulo-sched.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c index 8426ba6..62918a0 100644 --- a/gcc/modulo-sched.c +++ b/gcc/modulo-sched.c @@ -742,9 +742,9 @@ generate_prolog_epilog (partial_schedule_ptr ps, struct loop * loop, rtx count_r for (i = 0; i < last_stage; i++) duplicate_insns_of_cycles (ps, 0, i, 1); - /* Put the prolog , on the one and only entry edge. */ + /* Put the prolog on the entry edge. */ e = loop_preheader_edge (loop); - loop_split_edge_with(e , get_insns()); + split_edge_and_insert (e, get_insns()); end_sequence (); @@ -754,10 +754,10 @@ generate_prolog_epilog (partial_schedule_ptr ps, struct loop * loop, rtx count_r for (i = 0; i < last_stage; i++) duplicate_insns_of_cycles (ps, i + 1, last_stage, 0); - /* Put the epilogue on the one and only one exit edge. */ + /* Put the epilogue on the exit edge. */ gcc_assert (loop->single_exit); e = loop->single_exit; - loop_split_edge_with(e , get_insns()); + split_edge_and_insert (e, get_insns()); end_sequence (); } @@ -848,7 +848,7 @@ canon_loop (struct loop *loop) block. */ FOR_EACH_EDGE (e, i, EXIT_BLOCK_PTR->preds) if ((e->flags & EDGE_FALLTHRU) && (EDGE_COUNT (e->src->succs) > 1)) - loop_split_edge_with (e, NULL_RTX); + split_edge (e); if (loop->latch == loop->header || EDGE_COUNT (loop->latch->succs) > 1) @@ -856,7 +856,7 @@ canon_loop (struct loop *loop) FOR_EACH_EDGE (e, i, loop->header->preds) if (e->src == loop->latch) break; - loop_split_edge_with (e, NULL_RTX); + split_edge (e); } } @@ -873,7 +873,6 @@ sms_schedule (void) unsigned i,num_loops; partial_schedule_ptr ps; struct df *df; - struct loops *loops; basic_block bb = NULL; /* vars to the versioning only if needed*/ struct loop * nloop; @@ -881,10 +880,10 @@ sms_schedule (void) edge latch_edge; gcov_type trip_count = 0; - loops = loop_optimizer_init (LOOPS_HAVE_PREHEADERS - | LOOPS_HAVE_MARKED_SINGLE_EXITS); - if (!loops) - return; /* There is no loops to schedule. */ + loop_optimizer_init (LOOPS_HAVE_PREHEADERS + | LOOPS_HAVE_MARKED_SINGLE_EXITS); + if (!current_loops) + return; /* There are no loops to schedule. */ /* Initialize issue_rate. */ if (targetm.sched.issue_rate) @@ -914,16 +913,16 @@ sms_schedule (void) /* Allocate memory to hold the DDG array one entry for each loop. We use loop->num as index into this array. */ - g_arr = XCNEWVEC (ddg_ptr, loops->num); + g_arr = XCNEWVEC (ddg_ptr, current_loops->num); /* Build DDGs for all the relevant loops and hold them in G_ARR indexed by the loop index. */ - for (i = 0; i < loops->num; i++) + for (i = 0; i < current_loops->num; i++) { rtx head, tail; rtx count_reg; - struct loop *loop = loops->parray[i]; + struct loop *loop = current_loops->parray[i]; /* For debugging. */ if ((passes++ > MAX_SMS_LOOP_NUMBER) && (MAX_SMS_LOOP_NUMBER != -1)) @@ -1018,7 +1017,7 @@ sms_schedule (void) df = NULL; /* We don't want to perform SMS on new loops - created by versioning. */ - num_loops = loops->num; + num_loops = current_loops->num; /* Go over the built DDGs and perfrom SMS for each one of them. */ for (i = 0; i < num_loops; i++) { @@ -1027,7 +1026,7 @@ sms_schedule (void) int mii, rec_mii; unsigned stage_count = 0; HOST_WIDEST_INT loop_count = 0; - struct loop *loop = loops->parray[i]; + struct loop *loop = current_loops->parray[i]; if (! (g = g_arr[i])) continue; @@ -1177,8 +1176,8 @@ sms_schedule (void) rtx comp_rtx = gen_rtx_fmt_ee (GT, VOIDmode, count_reg, GEN_INT(stage_count)); - nloop = loop_version (loops, loop, comp_rtx, &condition_bb, - true); + nloop = loop_version (current_loops, loop, comp_rtx, + &condition_bb, true); } /* Set new iteration count of loop kernel. */ @@ -1218,7 +1217,7 @@ sms_schedule (void) /* Release scheduler data, needed until now because of DFA. */ sched_finish (); - loop_optimizer_finalize (loops); + loop_optimizer_finalize (); } /* The SMS scheduling algorithm itself |