Hi,
this patch mentiones few user visible changes I can think of.  I will
add some quality data on firefox once stage3 closes.

It seems that the optimization section of changes.html deserve some work :)

Honza

Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-6/changes.html,v
retrieving revision 1.46
diff -u -r1.46 changes.html
--- changes.html        22 Dec 2015 19:23:31 -0000      1.46
+++ changes.html        19 Jan 2016 15:42:56 -0000
@@ -43,6 +43,64 @@
        of array bounds.  In particular, it enables
        <code>-fsanitize=bounds</code> as well as instrumentation of
        flexible array member-like arrays.</li>
+    <li>Type based alias analysis now disambiguate accesses to different
+       pointers. This improve precision of the alias oracle by about 20-30%
+       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 oracle now correctly supports <code>weakref</code> and
+       <code>alias</code> attributes. This makes it possible to access
+       both variable and its alias in one translation unit which is common
+       with link-time optimization.</li>
+    <li>Value range propagation now assume that <code>this</code> pointer
+       of C++ methods is non-NULL.  This eliminates many NULL pointer checks
+       but also breaks some non-conforming code-bases (such as Qt-5, Chromium,
+       KDevelop). As a termporary work-around
+       <code>-fno-delete-null-pointer-checks</code> can be used. Wrong
+       code can be identified <code>-fsanitize=undefined</code>.</li>
+    <li>Link-time optimization improvements:
+    <ul>
+      <li><code>warning</code> and <code>error</code> attributes are now
+         correctly preserved by the declaration linking and thus
+         <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 Fortran2005 language standard.</p>
+         <p>
+         As an exception, <code>CHARACTER(KIND=C_CHAR)</code> is not 
inter-operable
+         with <code>char</code> in all cases because it is an array while
+         <code>char</code> is scalar.
+         <code>INTEGER(KIND=C_SIGNED_CHAR)</code> should be used instead.
+         In general, this inter-operability can not be implemented, for
+         example, on targets where function passing conventions of arrays
+         differs from scalars.</p>
+      <li>More of type information is now preserved at link-time reducing
+         the loss of accuracy of the type based alias analysis oracle 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>
+      <li>The size of LTO object files was reduced by about 11% (measured
+         by compiling Firefox 46.0).</li>
+      <li>Link-time parallelization (enabled using <code>-flto=n</code>)
+         was significantly improved by decreasing the size of streamed
+         data when partitioning program.  The size of streamed
+         IL while compiling Firefox 46.0 was reduced by 66%.</li>
+      <li>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
+         properly confiugre code generator and support incremental
+         linking. Inremental linking of LTO objects by <code>gcc -r</code> is
+         now supported on plugin enabled setups. Because code generation 
happens
+         during the incremnetal linking step, the whole program optimization
+         is not performed. GCC 7 will support incremental IL linking.</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 heuristics of inliner and function cloning passes.</li>
+      <li>Function cloning now more aggressively eliminate unused function
+         parameters.</li>
+    </ul></li>
   </ul>
 
 <!-- .................................................................. -->

Reply via email to