This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [WEB][PATCH] Describe -pg and LTO changes


> On 11/16/14 13:02, Andi Kleen wrote:
> >
> >This patch describes some user visible changes that were
> >added to gcc 5.
> >
> >Ok to commit?
> Yes, this is fine.  Thanks,
... which remind me that I also wrote some update that apparently was never approved

Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v
retrieving revision 1.26
diff -u -r1.26 changes.html
--- changes.html	17 Nov 2014 19:14:47 -0000	1.26
+++ changes.html	17 Nov 2014 19:51:15 -0000
@@ -21,6 +21,51 @@
 <h2 id="general">General Optimizer Improvements</h2>
 
   <ul>
+    <li>Inter-procedural optimization improvements:
+    <ul>
+     <li>Devirtualization pass was significantly improved by adding
+	 better support for speculative devirtualization and dynamic type
+	 detection. About 50% of virtual calls in Firefox are speculatively
+	 devirtualized during link-time optimization.
+     <li>New comdat localization pass lets linker to eliminate more dead code
+	 in presence of C++ inline functions.</li>
+     <li>Virtual tables are now optimized. Local aliases are used to reduce
+	 dynamic linking time of C++ virtual tables on ELF targets and
+	 data alignment has been reduced to limit data segment bloat.</li>
+     <li>New <code>-fno-semantic-interposition</code> flag can be used
+	 to improve code quality of shared libraries where interposition of
+	 exported symbols is not allowed.</li>
+     <li>Write-only variables are now detected and optimized out.</li>
+     <li>With profile feedback the function inliner can now bypass
+	 <code>--param inline-insns-auto</code> and <code>--param
+	 inline-insns-single</code> limits for hot calls.</li>
+     <li>IPA reference pass was significantly sped up making it feasible
+	 to enable <code>-fipa-reference</code> with
+	 <code>-fprofile-generage</code>. This also solve bottleneck
+	 seen when optimizing Chromium with link time optimization.</li>
+     <li>Symbol table and call-graph API was reworked to C++ and
+	 simplified.</li>
+    </ul></li>
+    <li>Link-time optimization improvements:
+    <ul>
+      <li>New One Definition Rule based merging of C++ types implemented.
+	  Type merging enables better devirtualization and alias analysis.
+	  Streaming extra information needed to merge types adds about 2-6% of
+	  memory size and object size increase. This can be controlled by
+	  <code>-flto-odr-type-merging</code>.</li>
+      <li>GCC bootstrap now use slim LTO object files.</li>
+      <li>Memory usage and link times was improved.  Tree merging was sped up,
+	  memory usage of GIMPLE declarations and types was reduced, and,
+	  support for on-demand streaming of variable constructors was added.</li>
+    </ul></li>
+    <li>Feedback directed optimization improvements:
+    <ul>
+      <li>Profile precision was improved in presence of C++ inline and extern
+	  inline functions.</li>
+      <li>New <code>gcov-tool</code> to manipulate profiles.</li>
+      <li>Profile is now more tolerant to source file changes (this can be
+	  controlled by <code>--param profile-func-internal-id</code>).</li>
+    </ul></li>
     <li>UndefinedBehaviorSanitizer gained a few new sanitization options:
     <ul>
       <li><code>-fsanitize=float-divide-by-zero</code>: detect floating-point
@@ -77,6 +122,9 @@
     <li>Full support for <a href="https://www.cilkplus.org/";>Cilk Plus</a>
 	has been added to the GCC compiler. Cilk Plus is an extension to
 	the C and C++ languages to support data and task parallelism.</li>
+    <li>New attribute <code>no_reorder</code> prevents reordering of selected symbols.
+	This enables to link-time optimize Linux kernel without need to use
+	<code>-fno-toplevel-reorder</code> that disable several optimizations.</li>
     <li>New preprocessor constructs, <code>__has_include</code>
         and <code>__has_include_next</code>, to test the availability of headers
         have been added.<br/>
@@ -236,6 +284,15 @@
     </li>
     <li>New random number distributions <code>logistic_distribution</code> and
       <code>uniform_on_sphere_distribution</code> as extensions.</li>
+    <li>New One Definition Rule violation warning (controlled by <code>-Wodr</code)
+        detects mismatches in type definitions and virtual table contents
+	during link-time optimization.</li>
+    <li>New warnings <code>-Wsuggest-final-types</code> and
+	<code>-Wsuggest-final-methods</code> helps developers
+	to annotate programs by <code>final</code> specifiers (or anonymous
+	namespaces) in the cases where code generation improves.
+	These warnings can be used at compile time, but they are more
+	useful in combination with link-time optimization.</li>
     <li><a href="https://sourceware.org/gdb/current/onlinedocs/gdb/Xmethods-In-Python.html";>GDB
       Xmethods</a> for Sequence Containers and <code>std::unique_ptr</code>;</li>
   </ul>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]