This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [wwwdocs] Update changes.html for LTO and IPA
- From: Gerald Pfeifer <gerald at pfeifer dot com>
- To: Jan Hubicka <hubicka at ucw dot cz>, Jonathan Wakely <jwakely at redhat dot com>
- Cc: Sandra Loosemore <sandra at codesourcery dot com>, gcc-patches at gcc dot gnu dot org, Richard Biener <rguenther at suse dot de>
- Date: Mon, 27 Feb 2017 14:34:32 -0800 (PST)
- Subject: Re: [wwwdocs] Update changes.html for LTO and IPA
- Authentication-results: sourceware.org; auth=none
- References: <20160119154507.GB56244@kam.mff.cuni.cz> <20160203143232.GA4729@redhat.com>
On Wed, 20 Jan 2016, Jan Hubicka wrote:
> this is updated patch. I tried to explain better the situation WRT
> incremental linking.
Thank you, Jan. I had a couple of editorial changes on top of
this, which I finally managed to commit. (See the patch below.)
And one question: "declaration linking" is used in the description
of Link-time optimization improvements, alas that string does not
appear anywhere in either the source tree or documentation?
On Wed, 3 Feb 2016, Jonathan Wakely wrote:
> s/of C++ methods/in C++ member functions/
This one got changed only partially in the patch applied last year,
and I have adjusted this now to read "in C++ member functions" as
opposed to "of C++ member functions".
Gerald
Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-6/changes.html,v
retrieving revision 1.95
diff -u -r1.95 changes.html
--- changes.html 25 Feb 2017 17:46:38 -0000 1.95
+++ changes.html 27 Feb 2017 22:29:33 -0000
@@ -59,12 +59,12 @@
on higher-level C++ programs. Programs doing invalid type punning
of pointer types may now need <code>-fno-strict-aliasing</code>
to work correctly.</li>
- <li>Alias analysis now correctly supports <code>weakref</code> and
- <code>alias</code> attributes. This makes it possible to access
+ <li>Alias analysis now correctly supports the <code>weakref</code> and
+ <code>alias</code> attributes. This allows accessing
both a variable and its alias in one translation unit which is common
with link-time optimization.</li>
<li>Value range propagation now assumes that the <code>this</code> pointer
- of C++ member functions is non-null. This eliminates
+ in C++ member functions is non-null. This eliminates
common null pointer checks
but also breaks some non-conforming code-bases (such as Qt-5, Chromium,
KDevelop). As a temporary work-around
@@ -74,7 +74,8 @@
<ul>
<li><code>warning</code> and <code>error</code> attributes are now
correctly preserved by declaration linking and thus
- <code>-D_FORTIFY_SOURCE=2</code> is now supported with <code>-flto</code>.</li>
+ <code>-D_FORTIFY_SOURCE=2</code> is now supported with
+ <code>-flto</code>.</li>
<li><p>Type merging was fixed to handle C and Fortran interoperability
rules as defined by the Fortran 2008 language standard.</p>
<p>
@@ -83,10 +84,10 @@
<code>char</code> is scalar.
<code>INTEGER(KIND=C_SIGNED_CHAR)</code> should be used instead.
In general, this inter-operability cannot be implemented, for
- example, on targets where function passing conventions of arrays
- differs from scalars.</p></li>
- <li>More type information is now preserved at link time reducing
- the loss of accuracy of the type based alias analysis compared
+ example on targets where the argument passing convention for
+ arrays differs from scalars.</p></li>
+ <li>More type information is now preserved at link time, reducing
+ the loss of accuracy of the type-based alias analysis compared
to builds without link-time optimization.</li>
<li>Invalid type punning on global variables and declarations is now
reported with <code>-Wodr-type-mismatch</code>.</li>
@@ -96,30 +97,35 @@
was significantly improved by decreasing the size of streamed
data when partitioning programs. The size of streamed
IL while compiling Firefox 46.0 was reduced by 66%.</li>
- <li><p>The linker plugin was extended to pass information about type of
- binary produced to GCC back end (that can be also manually controlled
- by <code>-flinker-output</code>). This makes it possible to
+ <li><p>The linker plugin was extended to pass information about the
+ type of binary produced to the GCC back end. (That can also be
+ controlled manually by <code>-flinker-output</code>.)
+ This makes it possible to
properly configure the code generator and support incremental
- linking. Incremental linking of LTO objects by <code>gcc -r</code> is
- now supported on plugin-enabled setups.</p>
+ linking. Incremental linking of LTO objects by <code>gcc -r</code>
+ is now supported for plugin-enabled setups.</p>
<p>There are two ways to perform incremental linking:</p>
<ol>
<li>Linking by <code>ld -r</code> will result in an object file
with all sections from individual object files mechanically merged.
- This delays the actual link time optimization to final linking step
- and thus permits whole program optimization. Linking final binary
+ This delays the actual link-time optimization to the final
+ linking step and thus permits whole program optimization.
+ Linking the final binary
with such object files is however slower.</li>
- <li>Linking by <code>gcc -r</code> will lead to link time optimization
- and produce final binary into the object file. Linking such object
- file is fast but avoids any benefits from whole program optimization.</li>
+ <li>Linking by <code>gcc -r</code> will lead to link-time
+ optimization and emit the final binary into the object file.
+ Linking such an object file is fast but avoids any benefits
+ from whole program optimization.</li>
</ol>
- GCC 7 will support incremental link-time optimization with <code>gcc -r</code>.</li>
+ GCC 7 will support incremental link-time optimization with
+ <code>gcc -r</code>.</li>
</ul></li>
<li>Inter-procedural optimization improvements:
<ul>
<li>Basic jump threading is now performed before profile construction
- and inline analysis, resulting in more realistic size and time estimates
- that drive the heuristics of the of inliner and function cloning passes.</li>
+ and inline analysis, resulting in more realistic size and time
+ estimates that drive the heuristics of the inliner and function
+ cloning passes.</li>
<li>Function cloning now more aggressively eliminates unused function
parameters.</li>
</ul></li>