diff options
author | Andrey Belevantsev <abel@ispras.ru> | 2014-02-25 10:41:08 +0400 |
---|---|---|
committer | Andrey Belevantsev <abel@gcc.gnu.org> | 2014-02-25 10:41:08 +0400 |
commit | 41b2d514d0fc40c9abf744e392e3f7f16fa610aa (patch) | |
tree | 0068bb8aaccc423c06f3d68481ab581853087486 /gcc | |
parent | c1c99405c16922201a4d32f4a7d1c3280df7c19c (diff) | |
download | gcc-41b2d514d0fc40c9abf744e392e3f7f16fa610aa.zip gcc-41b2d514d0fc40c9abf744e392e3f7f16fa610aa.tar.gz gcc-41b2d514d0fc40c9abf744e392e3f7f16fa610aa.tar.bz2 |
sel-sched.c (calculate_new_fences): New parameter ptime.
* sel-sched.c (calculate_new_fences): New parameter ptime.
Calculate it as a maximum over all fence cycles.
(sel_sched_region_2): Adjust the call to calculate_new_fences.
Print the final schedule timing when sched_verbose.
From-SVN: r208110
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/sel-sched.c | 25 |
2 files changed, 23 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 671c8f3..385179b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,11 @@ 2014-02-25 Andrey Belevantsev <abel@ispras.ru> + + * sel-sched.c (calculate_new_fences): New parameter ptime. + Calculate it as a maximum over all fence cycles. + (sel_sched_region_2): Adjust the call to calculate_new_fences. + Print the final schedule timing when sched_verbose. + +2014-02-25 Andrey Belevantsev <abel@ispras.ru> PR rtl-optimization/60292 * sel-sched.c (fill_vec_av_set): Do not reset target availability diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index f13975d..241bdad 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -7467,12 +7467,13 @@ find_min_max_seqno (flist_t fences, int *min_seqno, int *max_seqno) } } -/* Calculate new fences from FENCES. */ +/* Calculate new fences from FENCES. Write the current time to PTIME. */ static flist_t -calculate_new_fences (flist_t fences, int orig_max_seqno) +calculate_new_fences (flist_t fences, int orig_max_seqno, int *ptime) { flist_t old_fences = fences; struct flist_tail_def _new_fences, *new_fences = &_new_fences; + int max_time = 0; flist_tail_init (new_fences); for (; fences; fences = FLIST_NEXT (fences)) @@ -7501,9 +7502,11 @@ calculate_new_fences (flist_t fences, int orig_max_seqno) } else extract_new_fences_from (fences, new_fences, orig_max_seqno); + max_time = MAX (max_time, FENCE_CYCLE (fence)); } flist_clear (&old_fences); + *ptime = max_time; return FLIST_TAIL_HEAD (new_fences); } @@ -7558,6 +7561,7 @@ static void sel_sched_region_2 (int orig_max_seqno) { int highest_seqno_in_use = orig_max_seqno; + int max_time = 0; stat_bookkeeping_copies = 0; stat_insns_needed_bookkeeping = 0; @@ -7573,19 +7577,22 @@ sel_sched_region_2 (int orig_max_seqno) find_min_max_seqno (fences, &min_seqno, &max_seqno); schedule_on_fences (fences, max_seqno, &scheduled_insns_tailp); - fences = calculate_new_fences (fences, orig_max_seqno); + fences = calculate_new_fences (fences, orig_max_seqno, &max_time); highest_seqno_in_use = update_seqnos_and_stage (min_seqno, max_seqno, highest_seqno_in_use, &scheduled_insns); } if (sched_verbose >= 1) - sel_print ("Scheduled %d bookkeeping copies, %d insns needed " - "bookkeeping, %d insns renamed, %d insns substituted\n", - stat_bookkeeping_copies, - stat_insns_needed_bookkeeping, - stat_renamed_scheduled, - stat_substitutions_total); + { + sel_print ("Total scheduling time: %d cycles\n", max_time); + sel_print ("Scheduled %d bookkeeping copies, %d insns needed " + "bookkeeping, %d insns renamed, %d insns substituted\n", + stat_bookkeeping_copies, + stat_insns_needed_bookkeeping, + stat_renamed_scheduled, + stat_substitutions_total); + } } /* Schedule a region. When pipelining, search for possibly never scheduled |