* [WEB][PATCH] Describe -pg and LTO changes
@ 2014-11-16 20:54 Andi Kleen
2014-11-17 19:52 ` Jeff Law
2015-04-08 16:41 ` Gerald Pfeifer
0 siblings, 2 replies; 6+ messages in thread
From: Andi Kleen @ 2014-11-16 20:54 UTC (permalink / raw)
To: gcc-patches
This patch describes some user visible changes that were
added to gcc 5.
Ok to commit?
-Andi
Index: htdocs/gcc-5/changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v
retrieving revision 1.25
diff -u -r1.25 changes.html
--- htdocs/gcc-5/changes.html 14 Nov 2014 21:32:32 -0000 1.25
+++ htdocs/gcc-5/changes.html 16 Nov 2014 20:03:07 -0000
@@ -154,6 +154,11 @@
about qualifiers on pointers being discarded via a new warning option
<code>-Wno-discarded-qualifiers</code>.</li>
<li>The C front end now generates more precise caret diagnostics.</li>
+ <li>The -pg option now only affects the current file in a LTO build.</li>
+ <li>A new no_reorder attribute has been added, that prevents reordering
+ of a specific symbol against other such symbols or inline assembler.
+ This is a more focussed alternative to
+ <code>-fno-toplevel-reorder</code>.
</ul>
<h3 id="cxx">C++</h3>
@@ -295,6 +300,17 @@
</ul>
+<h3 id="x86">IA-32/x86-64</h3>
+ <ul>
+ <li>The new <code>-mrecord-mcount</code> option for <code>-pg</code>
+ generates a Linux kernel style table of pointers to mcount or
+ __fentry__ calls at the beginning of functions. The new
+ <code>-mnop-mcount</code> option in addition also generates nops in
+ place of the __fentry__ or mcount call, so that a call per function
+ can be later patched in. This can be used for low overhead tracing or
+ hot code patching.</li>
+ </ul>
+
<h2 id="os">Operating Systems</h2>
<h3 id="dragonfly">DragonFly BSD</h3>
@@ -304,7 +320,11 @@
</ul>
<!-- h2>Documentation improvements</h2-->
-<!-- h2>Other significant improvements</h2 -->
-
+<h2>Other significant improvements</h2>
+ <h3 id="gcc-ar"></h3>
+ <ul>
+ <li>The <code>gcc-ar, gcc-nm, gcc-ranlib</code> wrappers now
+ understand a <code>-B</code> option to set the compiler to use.</li>
+ </ul>
</body>
</html>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [WEB][PATCH] Describe -pg and LTO changes
2014-11-16 20:54 [WEB][PATCH] Describe -pg and LTO changes Andi Kleen
@ 2014-11-17 19:52 ` Jeff Law
2014-11-17 19:57 ` Jan Hubicka
2015-04-08 16:41 ` Gerald Pfeifer
1 sibling, 1 reply; 6+ messages in thread
From: Jeff Law @ 2014-11-17 19:52 UTC (permalink / raw)
To: Andi Kleen, gcc-patches
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,
Jeff
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [WEB][PATCH] Describe -pg and LTO changes
2014-11-17 19:52 ` Jeff Law
@ 2014-11-17 19:57 ` Jan Hubicka
2014-11-17 20:05 ` Jeff Law
2014-11-17 20:37 ` Andi Kleen
0 siblings, 2 replies; 6+ messages in thread
From: Jan Hubicka @ 2014-11-17 19:57 UTC (permalink / raw)
To: Jeff Law; +Cc: Andi Kleen, gcc-patches
> 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>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [WEB][PATCH] Describe -pg and LTO changes
2014-11-17 19:57 ` Jan Hubicka
@ 2014-11-17 20:05 ` Jeff Law
2014-11-17 20:37 ` Andi Kleen
1 sibling, 0 replies; 6+ messages in thread
From: Jeff Law @ 2014-11-17 20:05 UTC (permalink / raw)
To: Jan Hubicka; +Cc: Andi Kleen, gcc-patches
On 11/17/14 12:52, Jan Hubicka wrote:
>> 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
Looks good to me.
jeff
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [WEB][PATCH] Describe -pg and LTO changes
2014-11-17 19:57 ` Jan Hubicka
2014-11-17 20:05 ` Jeff Law
@ 2014-11-17 20:37 ` Andi Kleen
1 sibling, 0 replies; 6+ messages in thread
From: Andi Kleen @ 2014-11-17 20:37 UTC (permalink / raw)
To: Jan Hubicka; +Cc: Jeff Law, gcc-patches
Jan Hubicka <hubicka@ucw.cz> writes:
> 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>
I already had that one. One of us needs to drop.
-Andi
--
ak@linux.intel.com -- Speaking for myself only
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [WEB][PATCH] Describe -pg and LTO changes
2014-11-16 20:54 [WEB][PATCH] Describe -pg and LTO changes Andi Kleen
2014-11-17 19:52 ` Jeff Law
@ 2015-04-08 16:41 ` Gerald Pfeifer
1 sibling, 0 replies; 6+ messages in thread
From: Gerald Pfeifer @ 2015-04-08 16:41 UTC (permalink / raw)
To: Andi Kleen; +Cc: gcc-patches
On Sun, 16 Nov 2014, Andi Kleen wrote:
> This patch describes some user visible changes that were
> added to gcc 5.
Thanks, Andi!
I added some <code> environments, broke up a long one, changed
"a LTO build" to "an LTO build",
Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v
retrieving revision 1.97
diff -u -r1.97 changes.html
--- changes.html 8 Apr 2015 07:26:23 -0000 1.97
+++ changes.html 8 Apr 2015 16:39:59 -0000
@@ -330,7 +330,8 @@
about qualifiers on pointers being discarded via a new warning option
<code>-Wno-discarded-qualifiers</code>.</li>
<li>The C front end now generates more precise caret diagnostics.</li>
- <li>The -pg option now only affects the current file in a LTO build.</li>
+ <li>The <code>-pg</code> command-line option now only affects the current
+ file in an LTO build.</li>
</ul>
<h3 id="cxx">C++</h3>
@@ -684,12 +685,13 @@
<code>-mavx512ifma</code> and for AVX-512 Vector Bit Manipulation
Instructions: <code>-mavx512vbmi</code>.</li>
<li>The new <code>-mrecord-mcount</code> option for <code>-pg</code>
- generates a Linux kernel style table of pointers to mcount or
- __fentry__ calls at the beginning of functions. The new
- <code>-mnop-mcount</code> option in addition also generates nops in
- place of the __fentry__ or mcount call, so that a call per function
- can be later patched in. This can be used for low overhead tracing or
- hot code patching.</li>
+ generates a Linux kernel style table of pointers to
+ <code>mcount</code> or <code>__fentry__</code> calls at the beginning
+ of functions. The new <code>-mnop-mcount</code> option in addition
+ also generates nops in place of the <code>__fentry__</code> or
+ <code>mcount</code> call, so that a call per function can be later
+ patched in. This can be used for low overhead tracing or hot code
+ patching.</li>
<li>The new <code>-malign-data</code> option controls how
GCC aligns variables. <code>-malign-data=compat</code> uses
increased alignment compatible with GCC 4.8 and earlier,
@@ -838,8 +840,9 @@
<h2>Other significant improvements</h2>
<h3 id="gcc-ar"></h3>
<ul>
- <li>The <code>gcc-ar, gcc-nm, gcc-ranlib</code> wrappers now
- understand a <code>-B</code> option to set the compiler to use.</li>
+ <li>The <code>gcc-ar</code>, <code>gcc-nm</code>, <code>gcc-ranlib</code>
+ wrappers now understand a <code>-B</code> option to set the compiler
+ to use.</li>
</ul>
<h3 id="driver"></h3>
<ul>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-04-08 16:41 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-16 20:54 [WEB][PATCH] Describe -pg and LTO changes Andi Kleen
2014-11-17 19:52 ` Jeff Law
2014-11-17 19:57 ` Jan Hubicka
2014-11-17 20:05 ` Jeff Law
2014-11-17 20:37 ` Andi Kleen
2015-04-08 16:41 ` Gerald Pfeifer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).