> 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>