[wwwdocs] IPA/LTO/FDO updates for gcc-5/changes.html
Gerald Pfeifer
gerald@pfeifer.com
Sun Feb 8 23:12:00 GMT 2015
On Wednesday 2014-09-24 17:25, Jan Hubicka wrote:
> this patch adds list of changes to IPA/LTO/FDO before I forget about
> them ;)
Good work, lots of! :-)
In preparation of the GCC 5.0 release I did go through this (and
other changes) and made a number of editorial changes which you
can find below.
I went ahead and committed those. If there are further ones, or
you'd like to see things differently, let me know.
Gerald
Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v
retrieving revision 1.76
diff -u -r1.76 changes.html
--- changes.html 31 Jan 2015 15:48:16 -0000 1.76
+++ changes.html 8 Feb 2015 22:58:43 -0000
@@ -44,29 +44,29 @@
<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
+ <li>A 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
+ <li>The IPA reference pass was significantly sped up making it feasible
to enable <code>-fipa-reference</code> with
<code>-fprofile-generate</code>. This also solves a bottleneck
- seen when building Chromium with link time optimization.</li>
- <li>Symbol table and call-graph API was reworked to C++ and
+ seen when building Chromium with link-time optimization.</li>
+ <li>The 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.
+ <li>One Definition Rule based merging of C++ types has been 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,
+ <li>GCC bootstrap now uses slim LTO object files.</li>
+ <li>Memory usage and link times were 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>
@@ -74,8 +74,9 @@
<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
+ <li>The new <code>gcov-tool</code> utility allows manipulating
+ profiles.</li>
+ <li>Profiles are 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:
@@ -155,10 +156,11 @@
<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
- against other such symbols or inline assembler.
- This enables to link-time optimize Linux kernel without need to use
- <code>-fno-toplevel-reorder</code> that disable several optimizations.</li>
+ <li>A new attribute <code>no_reorder</code> prevents reordering of
+ selected symbols against other such symbols or inline assembler.
+ This enables to link-time optimize the Linux kernel without having
+ to resort to <code>-fno-toplevel-reorder</code> that disables
+ 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/>
@@ -278,13 +280,13 @@
void operator delete (void *, std::size_t) noexcept;
void operator delete[] (void *, std::size_t) noexcept;</pre></blockquote>
</li>
- <li>New One Definition Rule violation warning (controlled by <code>-Wodr</code>)
+ <li>A 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.
+ <code>-Wsuggest-final-methods</code> help developers
+ to annotate programs with <code>final</code> specifiers (or anonymous
+ namespaces) to improve code generation.
These warnings can be used at compile time, but they are more
useful in combination with link-time optimization.</li>
<li>G++ no longer supports
More information about the Gcc-patches
mailing list