[wwwdocs] Add GCC10 IPA/LTO changes
Jan Hubicka
hubicka@ucw.cz
Mon Dec 30 14:15:00 GMT 2019
Hi,
here are some of changes of LTO/IPA done in GCC10. There is also
recursive cloning and some other stuff I will add incrementally as well
as some data on overall compile time/memory use improvements as we
reported in past years. I am still running tests and fixing bugs in this
area.
Honza
diff --git a/htdocs/gcc-10/changes.html b/htdocs/gcc-10/changes.html
index aca76825..0f0fce18 100644
--- a/htdocs/gcc-10/changes.html
+++ b/htdocs/gcc-10/changes.html
@@ -50,12 +50,46 @@ a work-in-progress.</p>
<!-- .................................................................. -->
<h2 id="general">General Improvements</h2>
+<p>The following GCC command line options have been introduced or improved.</p>
+<ul>
+ <li><a href="https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Optimize-Options.html#index-fprofile-partial-training"><code>-fprofile-partial-training</code></a>
+ can now be used to inform compiler that code paths not covered by the
+ train run should not be optimized for size.</li>
+</ul>
<p>The following built-in functions have been introduced.</p>
<ul>
<li><code>__builtin_roundeven</code> for the corresponding function from
ISO/IEC TS 18661.
</li>
</ul>
+<p>A large number of improvements to code generation have been made, including
+ but not limited to the following.</p>
+<ul>
+ <li>Inter-procedural optimization improvements:
+ <ul>
+ <li>Inter-procedural scalar replacement for aggregates (IPA-SRA) pass was re-implemented to work at link-time.
+ </li>
+ <li><a href="https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Optimize-Options.html#index-finline-functions"><code>-finline-functions</code></a>
+ is now enabled at <code>-O2</code> and was retuned for better code size
+ versus runtime performance tradeofs. Inliner heuristics was also
+ significantly sped up to avoid negativive impact to <code>-flto
+ -O2</code> compile times.
+ </li>
+ <li>Inliner heuristics and function clonning can now use value-range
+ information to predict effectivity of individual transformations.</li>
+ <li>Selected <code>--param</code> values can now be specified at
+ translation unit granuality. This includes all parameters controlling
+ inliner.</li>
+ <li>During link-time optimization the C++ One Definition Rule is used to
+ increase precision of type based alias analysis.</li>
+ </ul>
+ </li>
+ <li>Profile driven optimization improvements:
+ <ul>
+ <li>Profile maintenance during compilation was improved and hot/cold code partitioning improved.</li>
+ </ul>
+ </li>
+</ul>
<!-- .................................................................. -->
<h2 id="languages">New Languages and Language specific improvements</h2>
More information about the Gcc-patches
mailing list