[wwwdocs] Update gcc-8/changes.html for some IPA and x86 canges

Message ID 20180319210851.GA61820@kam.mff.cuni.cz
State New
Headers show
Series
  • [wwwdocs] Update gcc-8/changes.html for some IPA and x86 canges
Related show

Commit Message

Jan Hubicka March 19, 2018, 9:08 p.m.
Hi,
this patch adds some documentation for what is new in IPA and x86.
For lto we should mention early-debug.  Richard, perhaps you can suggest
wording?

Honza

Comments

Gerald Pfeifer March 19, 2018, 10:48 p.m. | #1
Hi Honza,

thanks for putting this together.  Below you'll find a number of
simple suggestions.  This patch is fine if you make those changes;
no need to review again, though posting the final patch would be
good.


On Mon, 19 Mar 2018, Jan Hubicka wrote:
> +    <li>Reworked runtime estimation metrics leading to more realistic guesses

> +	driving inliner and clonning heuristics.</li>


"run-time" (since it's an adjective here)

"cloning"

> +    <li>The ipa-pure-const pass is extended to propagate malloc attribute, and the


"the <code>malloc</code> attribute", i.e., add "the" and markup.

> +	corresponding warning option <code>Wsuggest-attribute=malloc</code> emits a

> +	diagnostic for a function, which can be annotated with malloc attribute.</li>


"with the <code>malloc</code>"

> +    <li>New infrastructure for representing profile (both statically guessed

> +	and profile feedback) which allows propagation of furhter information

> +	about reliablility of the profile.</li>


"representing profiles"?

"further" (typo)

"about the reliability"

> +    <li>Number of improvements in profile updating code solving problems

> +	found by new verification code.</li>


"A number of..."

"in the profile updating code"

"> +    <li>Static detection of code which is not executed in valid run of the

"in a valid run"

> +	program. This includes paths which triggers undefined behaviour


"trigger" (plural)

And "behavior" (American English)

> +	as well as call to functions declared with <code>cold</code> attribute.


"calls" (plural)

"declared with the" (add article)

> +	Newly <code>noreturn</code> attribute does not imply all effects of

> +	<code>cold</code> to make difference between <code>exit</code> (which

> +	is <code>noreturn/code> and <code>abort</code> (which is in addition

> +	not executed in valid runs).</li>


"The new...attribute", or did you mean "Newly the ...attribute"?

"to make a difference" or better "differentiate"?

And closing ")" in the description of exit.

> +  <li>

> +    Vectorization costs metrics has been reworked leading to significant improvments

> +    on some benchmarks</li>


"cost metrics"

And "." at the very end.

Cheers,
Gerald
Richard Biener March 20, 2018, 8:19 a.m. | #2
On Mon, 19 Mar 2018, Jan Hubicka wrote:

> Hi,

> this patch adds some documentation for what is new in IPA and x86.

> For lto we should mention early-debug.  Richard, perhaps you can suggest

> wording?


I have committed the following (will happily edit if necessary).

Richard.

2018-03-20  Richard Biener  <rguenther@suse.de>

	* changes.html: Mention early LTO debug, -floop-nest-optimize
	improvements,  -floop-unroll-and-jam,  -floop-interchange,
	-fstack-clash-protection and adjust the -fno-strict-overflow
	entry for the new -fwrapv-pointer.

Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/changes.html,v
retrieving revision 1.45
diff -u -r1.45 changes.html
--- changes.html	19 Mar 2018 23:53:35 -0000	1.45
+++ changes.html	20 Mar 2018 08:17:45 -0000
@@ -68,6 +68,13 @@
 	bodies into hot and cold regions, is now enabled by default at <code>-O2</code>
 	and higher for x86 and x86-64.</li>
   </ul>
+  <li>Link-time optimization improvements:
+  <ul>
+    <li>On ELF targets using DWARF debug information has been significantly
+        improved in quality by properly preserving language-specific
+	debug information.  This allows for example the libstdc++
+	pretty-printers to work with LTO optimized executables.</li>
+  </ul>
   <li>
     A new option <code>-fcf-protection=[full|branch|return|none]</code> is
     introduced to perform code instrumentation to increase program security by
@@ -77,6 +84,25 @@
     guide for further information about the option syntax and section "New Targets
     and Target Specific Improvements" for IA-32/x86-64 for more details.
   </li>
+  <li>
+    The polyhedral-based loop nest optimization pass
+    <code>-floop-nest-optimize</code> has been overhauled.  It's still
+    considered experimental and may not result in any runtime improvements.
+  </li>
+  <li>
+    Two new classical loop nest optimization passes have been added.
+    <code>-floop-unroll-and-jam</code> performs outer loop unrolling
+    and fusing of the inner loop copies.  <code>-floop-interchange</code>
+    exchanges loops in a loop nest to improve data locality.  Both passes
+    are enabled by default at <code>-O3</code> and above.
+  </li>
+  <li>
+    The new option <code>-fstack-clash-protection</code> causes the
+    compiler to insert probes whenever stack space is allocated
+    statically or dynamically to reliably detect stack overflows and
+    thus mitigate the attack vector that relies on jumping over
+    a stack guard page as provided by the operating system.
+  </li>
 </ul>
 
 
@@ -139,8 +165,8 @@
       </ul>
     </li>
     <li><code>-fno-strict-overflow</code> is now mapped to
-     <code>-fwrapv</code> and signed integer overflow is now undefined by
-     default at all optimization levels.  Using
+     <code>-fwrapv -fwrapv-pointer</code> and signed integer overflow
+     is now undefined by default at all optimization levels.  Using
      <code>-fsanitize=signed-integer-overflow</code> is now the preferred
      way to audit code, <code>-Wstrict-overflow</code> is deprecated.</li>
 </ul>
Gerald Pfeifer March 20, 2018, 8:52 a.m. | #3
Here a minor update on top of the committed patch.

Applied.

Gerald

Index: gcc-8/changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/changes.html,v
retrieving revision 1.45
diff -u -r1.45 changes.html
--- gcc-8/changes.html	19 Mar 2018 23:53:35 -0000	1.45
+++ gcc-8/changes.html	20 Mar 2018 08:05:53 -0000
@@ -49,7 +49,7 @@
     <li>The ipa-pure-const pass is extended to propagate the <code>malloc</code> attribute,
 	and the corresponding warning option <code>Wsuggest-attribute=malloc</code> emits a
 	diagnostic for a function, which can be annotated with <code>malloc</code> attribute.</li>
-  </ul>
+  </ul></li>
   <li>Profile driven optimization improvements:
   <ul>
     <li>New infrastructure for representing profiles (both statically guessed
@@ -67,7 +67,7 @@
     <li><code>-freorder-blocks-and-partition</code>, a pass splitting function
 	bodies into hot and cold regions, is now enabled by default at <code>-O2</code>
 	and higher for x86 and x86-64.</li>
-  </ul>
+  </ul></li>
   <li>
     A new option <code>-fcf-protection=[full|branch|return|none]</code> is
     introduced to perform code instrumentation to increase program security by
Jan Hubicka March 20, 2018, 1:04 p.m. | #4
> On Mon, 19 Mar 2018, Jan Hubicka wrote:

> 

> > Hi,

> > this patch adds some documentation for what is new in IPA and x86.

> > For lto we should mention early-debug.  Richard, perhaps you can suggest

> > wording?

> 

> I have committed the following (will happily edit if necessary).


Great thanks a lot!
I wonder if Caveats section should mention that early-debug may not work with
your favorite DWARF consumer and that libunwind, lldb and others needs fixing
(perhaps mentioning gdb revision that works)

Honza
Gerald Pfeifer April 7, 2018, 9:11 p.m. | #5
On Tue, 20 Mar 2018, Richard Biener wrote:
> I have committed the following (will happily edit if necessary).


Thanks, Richard!

I struggled a bit parsing the item DWARF debug information improvements.
Are you fine with the proposed change below?

Gerald

Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/changes.html,v
retrieving revision 1.50
diff -u -r1.50 changes.html
--- changes.html	1 Apr 2018 22:19:57 -0000	1.50
+++ changes.html	7 Apr 2018 21:09:53 -0000
@@ -72,10 +72,11 @@
     </ul></li>
   <li>Link-time optimization improvements:
   <ul>
-    <li>On ELF targets using DWARF debug information has been significantly
-        improved in quality by properly preserving language-specific
-	debug information.  This allows for example the libstdc++
-	pretty-printers to work with LTO optimized executables.</li>
+    <li>We have significantly improved debug information on ELF targets
+        using DWARF debug information by properly preserving
+        language-specific information.  This allows for example the
+        libstdc++ pretty-printers to work with LTO optimized
+        executables.</li>
   </ul></li>
   <li>
     A new option <code>-fcf-protection=[full|branch|return|none]</code> is
Richard Biener April 8, 2018, 6:30 a.m. | #6
On April 7, 2018 11:11:05 PM GMT+02:00, Gerald Pfeifer <gerald@pfeifer.com> wrote:
>On Tue, 20 Mar 2018, Richard Biener wrote:

>> I have committed the following (will happily edit if necessary).

>

>Thanks, Richard!

>

>I struggled a bit parsing the item DWARF debug information

>improvements.

>Are you fine with the proposed change below?


Sure! Go ahead. 

Richard. 

>Gerald

>

>Index: changes.html

>===================================================================

>RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/changes.html,v

>retrieving revision 1.50

>diff -u -r1.50 changes.html

>--- changes.html	1 Apr 2018 22:19:57 -0000	1.50

>+++ changes.html	7 Apr 2018 21:09:53 -0000

>@@ -72,10 +72,11 @@

>     </ul></li>

>   <li>Link-time optimization improvements:

>   <ul>

>-    <li>On ELF targets using DWARF debug information has been

>significantly

>-        improved in quality by properly preserving language-specific

>-	debug information.  This allows for example the libstdc++

>-	pretty-printers to work with LTO optimized executables.</li>

>+    <li>We have significantly improved debug information on ELF

>targets

>+        using DWARF debug information by properly preserving

>+        language-specific information.  This allows for example the

>+        libstdc++ pretty-printers to work with LTO optimized

>+        executables.</li>

>   </ul></li>

>   <li>

> A new option <code>-fcf-protection=[full|branch|return|none]</code> is
Gerald Pfeifer April 8, 2018, 2 p.m. | #7
On Sun, 8 Apr 2018, Richard Biener wrote:
>> I struggled a bit parsing the item DWARF debug information

>> improvements.

>> Are you fine with the proposed change below?

> Sure! Go ahead.


Thanks!  

Before committing I read it again and simplified a bit. Below the 
final version.

Gerald
Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/changes.html,v
retrieving revision 1.50
diff -u -r1.50 changes.html
--- changes.html	1 Apr 2018 22:19:57 -0000	1.50
+++ changes.html	8 Apr 2018 12:40:08 -0000
@@ -72,10 +72,10 @@
     </ul></li>
   <li>Link-time optimization improvements:
   <ul>
-    <li>On ELF targets using DWARF debug information has been significantly
-        improved in quality by properly preserving language-specific
-	debug information.  This allows for example the libstdc++
-	pretty-printers to work with LTO optimized executables.</li>
+    <li>We have significantly improved debug information on ELF targets
+        using DWARF by properly preserving language-specific information.
+        This allows for example the libstdc++ pretty-printers to work with
+        LTO optimized executables.</li>
   </ul></li>
   <li>
     A new option <code>-fcf-protection=[full|branch|return|none]</code> is

Patch

Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/changes.html,v
retrieving revision 1.41
diff -u -r1.41 changes.html
--- changes.html	12 Mar 2018 17:26:20 -0000	1.41
+++ changes.html	19 Mar 2018 21:07:07 -0000
@@ -42,9 +42,32 @@ 
 <!-- .................................................................. -->
 <h2 id="general">General Improvements</h2>
 <ul>
-  <li>The ipa-pure-const pass is extended to propagate malloc attribute, and the
-  corresponding warning option <code>Wsuggest-attribute=malloc</code> emits a
-  diagnostic for a function, which can be annotated with malloc attribute.</li>
+  <li>Inter-procedural optimization improvements:
+  <ul>
+    <li>Reworked runtime estimation metrics leading to more realistic guesses
+	driving inliner and clonning heuristics.</li>
+    <li>The ipa-pure-const pass is extended to propagate malloc attribute, and the
+	corresponding warning option <code>Wsuggest-attribute=malloc</code> emits a
+	diagnostic for a function, which can be annotated with malloc attribute.</li>
+  </ul>
+  <li>Profile driven optimization improvements:
+  <ul>
+    <li>New infrastructure for representing profile (both statically guessed
+	and profile feedback) which allows propagation of furhter information
+	about reliablility of the profile.</li>
+    <li>Number of improvements in profile updating code solving problems
+	found by new verification code.</li>
+    <li>Static detection of code which is not executed in valid run of the
+	program. This includes paths which triggers undefined behaviour
+	as well as call to functions declared with <code>cold</code> attribute.
+	Newly <code>noreturn</code> attribute does not imply all effects of
+	<code>cold</code> to make difference between <code>exit</code> (which
+	is <code>noreturn/code> and <code>abort</code> (which is in addition
+	not executed in valid runs).</li>
+    <li><code>-freorder-blocks-and-partition</code>, a pass splitting function
+	bodies into hot and cold regions, is now enabled by default at <code>-O2</code>
+	and higher for i386.</li>
+  </ul><li>
   <li>
     A new option <code>-fcf-protection=[full|branch|return|none]</code> is
     introduced to perform code instrumentation to increase program security by
@@ -435,6 +458,11 @@ 
 <ul>
   <li>
     The x86 port now supports the <code>naked</code> function attribute.</li>
+  <li>
+    Better tuning for <code>znver1</code> and Intel Core based CPUs.</li>
+  <li>
+    Vectorization costs metrics has been reworked leading to significant improvments
+    on some benchmarks</li>
   <li>GCC now supports the Intel CPU named Cannonlake through
     <code>-march=cannonlake</code>. The switch enables the AVX512VBMI,
     AVX512IFMA and SHA ISA extensions.</li>