Re: Compiler speed (vanilla vs. LTO, PGO and LTO+PGO)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Interesting, I was able to get faste LTO+PGO compile times than non-LTO,PGO.
> I however did testng only on combine.c compliation, so not very scientific.
> 
> There are some cases FDO information is not streamed well in all cases.  I will
> post patch for that later today.  Perhaps it will make situation bit better.

Hi,
there is overflow in the histogram merging code truncating all gcov counters
that do not fit in integer. Fixed by the following patch I applied to mainline
as obvious.  It may make the LTO binaries noticeably smaller (we will see on
the next run of regular SPEC testers).

Honza

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 197205)
+++ ChangeLog	(working copy)
@@ -1,5 +1,9 @@
 2013-03-28  Jan Hubicka  <jh@xxxxxxx>
 
+	* lto-cgraph.c (merge_profile_summaries): Fix overflows.
+
+2013-03-28  Jan Hubicka  <jh@xxxxxxx>
+
 	* data-streamer-in.c (streamer_read_gcov_count): New function.
 	* gimple-streamer-out.c: Include value-prof.h.
 	(output_gimple_stmt): Output histogram.
Index: lto-cgraph.c
===================================================================
--- lto-cgraph.c	(revision 197205)
+++ lto-cgraph.c	(working copy)
@@ -1362,8 +1362,8 @@ merge_profile_summaries (struct lto_file
     {
       /* Scale up the min value as we did the corresponding sum_all
          above. Use that to find the new histogram index.  */
-      int scaled_min = RDIV (saved_profile_info->histogram[h_ix].min_value
-                             * saved_scale, REG_BR_PROB_BASE);
+      gcov_type scaled_min = RDIV (saved_profile_info->histogram[h_ix].min_value
+                                   * saved_scale, REG_BR_PROB_BASE);
       /* The new index may be shared with another scaled histogram entry,
          so we need to account for a non-zero histogram entry at new_ix.  */
       unsigned new_ix = gcov_histo_index (scaled_min);




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux