Hi,
this patch adds list of changes to IPA/LTO/FDO before I forget about them ;)

Honza

Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v
retrieving revision 1.9
diff -c -p -r1.9 changes.html
*** changes.html        5 Sep 2014 08:25:46 -0000       1.9
--- changes.html        24 Sep 2014 15:23:35 -0000
***************
*** 17,22 ****
--- 17,67 ----
  <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
***************
*** 54,59 ****
--- 99,107 ----
      <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>
    </ul>
  
  <h3 id="c">C</h3>
***************
*** 90,95 ****
--- 138,152 ----
      <li>An implementation of <code>std::experimental::any</code>.</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>
    </ul>
  
  <h3 id="fortran">Fortran</h3>

Reply via email to