sel-sched.c (calculate_new_fences): New parameter ptime.
authorAndrey Belevantsev <abel@ispras.ru>
Tue, 25 Feb 2014 06:41:08 +0000 (10:41 +0400)
committerAndrey Belevantsev <abel@gcc.gnu.org>
Tue, 25 Feb 2014 06:41:08 +0000 (10:41 +0400)
        * 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

gcc/ChangeLog
gcc/sel-sched.c

index 671c8f3..385179b 100644 (file)
@@ -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
index f13975d..241bdad 100644 (file)
@@ -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