Hi. I'm sending updated version.
Martin
diff --git a/htdocs/gcc-9/changes.html b/htdocs/gcc-9/changes.html index 6123310..c2aedd0 100644 --- a/htdocs/gcc-9/changes.html +++ b/htdocs/gcc-9/changes.html @@ -195,6 +195,11 @@ v.c:10:7: missed: statement clobbers memory: __asm__ __volatile__("" : metadata such as the inlining chain, and profile information (if available). </li> + <li>Inter-procedural propagation of stack alignment can now be controlled by + <a href="https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fipa-stack-alignment"><code>-fipa-stack-alignment</code></a>. + <li>Propagation of addressability, readonly and writeonly flags on + static variables can now be controlled by + <a href="https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fipa-reference-addressable"><code>-fipa-reference-addressable</code></a>. </ul> <p>The following built-in functions have been introduced.</p> <ul> @@ -246,6 +251,52 @@ foo (int how) can be transformed into <code>100 * how + 5</code> (for values defined in the switch statement). </li> +<li>Inter-procedural optimization improvements: + <ul> + <li>Inliner defaults was tuned to better suits modern C++ codebases + especially when built with link time optimizations. + New parameters <code>max-inline-insns-small</code>, + <code>max-inline-insns-size</code>, + <code>uninlined-function-insns</code>, + <code>uninlined-function-time</code>, <code>uninlined-thunk-insns</code>, + and <code>uninlined-thunk-time</code> were added.</li> + <li>Hot/cold partitioning is now more precise and aggressive.</li> + <li>Improved scalability for very large translation units (especially + when link-time optimizing large programs).</li> + </ul> +<li>Profile driven optimization improvements: + <ul> + <li><a href="https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fprofile-use"><code>-fprofile-use</code></a> now enables + <a href="https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fversion-loops-for-strides"><code>-fversion-loops-for-strides</code></a>, + <a href="https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-floop-interchange"><code>-floop-interchange</code></a>, + <a href="https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-floop-unroll-and-jam"><code>-floop-unroll-and-jam</code></a>, + <a href="https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-ftree-loop-distribution"><code>-ftree-loop-distribution</code></a>.</li> + <li>Streaming of counter histograms was removed. This reduces + the size of profile files. Histogram is computed on the fly + with link-time optimization. + Parameter <code>hot-bb-count-ws-permille</code> was reduced + from 999 to 990 to account for more precise histograms.</li> + </ul> +<li>Link-time optimization improvements: + <ul> + <li>Types are now simplified prior streaming resulting in significant + reductions of the LTO object files, link-time memory use, and + improvements of link-time parallelism.</li> + <li>Default number of partitions (<code>--param lto-partitions</code>) was + increased from 32 to 128 enabling effective use of CPUs with more than + 32 hyperthreads. <code>--param lto-max-streaming-parallelism</code> + can now be used to control number of streaming processes.</li> + <li>Warnings on C++ One Decl Rule violations (<code>-Wodr</code>) are + now more informative and produce fewer redundant results.</li> + </ul> + Overal compile time of Firefox and LibreOffice was reduced by about 5% + compared to GCC 8.3. Size of LTO object files is reduced by 7%. + LTO link-time improves by 11% on 8-core machine and scales significantly better + for more parallel build environments. Serial stage of the link-time + optimization is 28% faster consuming 20% less memory. + Parallel stage now partitions to 128 partitions rather than 32 and + reduces memory use for every worker by 30%. + </li> </ul> <p>The following improvements to the <code>gcov</code> command-line utility have been made.</p>