diff options
author | Revital Eres <revital.eres@linaro.org> | 2011-07-31 10:21:01 +0000 |
---|---|---|
committer | Revital Eres <revitale@gcc.gnu.org> | 2011-07-31 10:21:01 +0000 |
commit | 413e50a27db9ed8489cd6b4814f82a0cb99e6c38 (patch) | |
tree | 3219b92dd93b47947ff786bf17c144a4584ee3ec | |
parent | f047e5183b142d9f0c64b17d8e51f328fe02d2f1 (diff) | |
download | gcc-413e50a27db9ed8489cd6b4814f82a0cb99e6c38.zip gcc-413e50a27db9ed8489cd6b4814f82a0cb99e6c38.tar.gz gcc-413e50a27db9ed8489cd6b4814f82a0cb99e6c38.tar.bz2 |
SMS: Misc. fixes
From-SVN: r176970
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/modulo-sched.c | 28 |
2 files changed, 23 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5e64d3e..5372f24 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-31 Revital Eres <revital.eres@linaro.org> + + * modulo-sched.c: Change comment. + (reset_sched_times): Fix print message. + (print_partial_schedule): Add print info. + 2011-07-31 Tom de Vries <tom@codesourcery.com> PR middle-end/43513 diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c index 668aa22..8c349d3 100644 --- a/gcc/modulo-sched.c +++ b/gcc/modulo-sched.c @@ -84,13 +84,14 @@ along with GCC; see the file COPYING3. If not see II cycles (i.e. use register copies to prevent a def from overwriting itself before reaching the use). - SMS works with countable loops whose loop count can be easily - adjusted. This is because we peel a constant number of iterations - into a prologue and epilogue for which we want to avoid emitting - the control part, and a kernel which is to iterate that constant - number of iterations less than the original loop. So the control - part should be a set of insns clearly identified and having its - own iv, not otherwise used in the loop (at-least for now), which + SMS works with countable loops (1) whose control part can be easily + decoupled from the rest of the loop and (2) whose loop count can + be easily adjusted. This is because we peel a constant number of + iterations into a prologue and epilogue for which we want to avoid + emitting the control part, and a kernel which is to iterate that + constant number of iterations less than the original loop. So the + control part should be a set of insns clearly identified and having + its own iv, not otherwise used in the loop (at-least for now), which initializes a register before the loop to the number of iterations. Currently SMS relies on the do-loop pattern to recognize such loops, where (1) the control part comprises of all insns defining and/or @@ -598,8 +599,8 @@ reset_sched_times (partial_schedule_ptr ps, int amount) /* Print the scheduling times after the rotation. */ fprintf (dump_file, "crr_insn->node=%d (insn id %d), " "crr_insn->cycle=%d, min_cycle=%d", crr_insn->node->cuid, - INSN_UID (crr_insn->node->insn), SCHED_TIME (u), - normalized_time); + INSN_UID (crr_insn->node->insn), normalized_time, + new_min_cycle); if (JUMP_P (crr_insn->node->insn)) fprintf (dump_file, " (branch)"); fprintf (dump_file, "\n"); @@ -2550,8 +2551,13 @@ print_partial_schedule (partial_schedule_ptr ps, FILE *dump) fprintf (dump, "\n[ROW %d ]: ", i); while (ps_i) { - fprintf (dump, "%d, ", - INSN_UID (ps_i->node->insn)); + if (JUMP_P (ps_i->node->insn)) + fprintf (dump, "%d (branch), ", + INSN_UID (ps_i->node->insn)); + else + fprintf (dump, "%d, ", + INSN_UID (ps_i->node->insn)); + ps_i = ps_i->next_in_row; } } |