===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-7/changes.html,v
retrieving revision 1.65
@@ -50,41 +50,44 @@
<code>-fprintf-return-value</code> option.</li>
<li>A new store merging pass has been added. It merges constant stores to
adjacent memory locations into fewer, wider, stores.
- It can be enabled by using the <code>-fstore-merging</code> option and is
+ It is enabled by the <code>-fstore-merging</code> option and is
enabled by default at the <code>-O2</code> optimization
- level or higher (including <code>-Os</code>).</li>
+ level or higher (and <code>-Os</code>).</li>
<li>A new code hoisting optimization has been added to the partial
redundancy elimination pass. It attempts to move evaluation of
expressions executed on all paths to the function exit as early as
possible, which helps primarily for code size, but can be useful for
- speed of generated code as well. It can be enabled by using the
+ speed of generated code as well. It is enabled by the
<code>-fcode-hoisting</code> option and is enabled by default at
- the <code>-O2</code> optimization level or higher.</li>
+ the <code>-O2</code> optimization level or higher (and
+ <code>-Os</code>).</li>
<li>A new interprocedural bitwise constant propagation optimization
has been added, which propagates knowledge about which bits of variables
are known to be zero (including pointer alignment information) across
- the call graph. It can be enabled by using the <code>-fipa-bit-cp</code>
+ the call graph. It is enabled by the <code>-fipa-bit-cp</code>
option if <code>-fipa-cp</code> is enabled as well, and is enabled by
- default at the <code>-O2</code> optimization level and higher.</li>
+ default at the <code>-O2</code> optimization level and higher (and
+ <code>-Os</code>).</li>
<li>A new interprocedural value range propagation optimization has been
added, which propagates integral ranges that variable values can be proven
- to be within across the call graph. It can be enabled by using the
+ to be within across the call graph. It is enabled by the
<code>-fipa-vrp</code> option and is enabled by default at the
- <code>-O2</code> optimization level and higher.</li>
+ <code>-O2</code> optimization level and higher (and
+ <code>-Os</code>).</li>
<li>A new loop splitting optimization pass has been added. It splits
certain loops if they contain a condition that is always true on one
side of the iteration space and always false on the other into two
loops where each of the new two loops iterates just on one of the sides
of the iteration space and the condition does not need to be checked
- inside of the loop. It can be enabled by using the
+ inside of the loop. It is enabled by the
<code>-fsplit-loops</code> option and is enabled by default at the
<code>-O3</code> optimization level or higher.</li>
- <li>Shrink-wrapping optimization can now separate portions of
+ <li>The shrink-wrapping optimization can now separate portions of
prologues and epilogues to improve performance if some of the
work done traditionally by prologues and epilogues is not needed
on certain paths. This is controlled by the
@@ -138,7 +141,7 @@
</li>
<li>The <code>-fsanitize=signed-integer-overflow</code> suboption of the
- UndefinedBehavior Sanitizer now diagnose arithmetic overflows even on
+ UndefinedBehavior Sanitizer now diagnoses arithmetic overflows even on
arithmetic operations with generic vectors.</li>
<li>Version 5 of the <a
@@ -525,8 +528,8 @@
<li>New <code>__builtin_add_overflow_p</code>,
<code>__builtin_sub_overflow_p</code>,
<code>__builtin_mul_overflow_p</code> built-in functions have been added.
- These work similarly to earlier added built-in functions without the
- <code>_p</code> suffix, but don't actually store the result of the
+ These work similarly to their siblings without the
+ <code>_p</code> suffix, but do not actually store the result of the
arithmetics anywhere, just return whether the operation would overflow.
These builtins allow easy checking for overflows e.g. in C++
<code>constexpr</code> contexts.</li>
@@ -566,7 +569,7 @@
(suffixed <code>f<i>N</i></code> or <code>f<i>N</i>x</code>) for the
new
types: <code>__builtin_copysign</code>, <code>__builtin_fabs</code>, <code>__builtin_huge_val</code>, <code>__builtin_inf</code>, <code>__builtin_nan</code>, <code>__builtin_nans</code>.</p></li>
- <li>Compilation with <code>-fopenmp</code> is now compatible with
+ <li>Compilation with <code>-fopenmp</code> is now compatible with the
C11 <code>_Atomic</code> keyword.</li>
</ul>
@@ -730,8 +733,8 @@
</li>
<li>Version 4.5 of the <a href="http://www.openmp.org/specifications/"
>OpenMP specification</a> is now partially supported also in the
- Fortran compilers, largest missing support in the Fortran frontend
- is structure element mapping.</li>
+ Fortran compiler; the largest missing item is structure element
+ mapping.</li>
<li>User-defined derived-type input/output (UDTIO) is added.</li>
@@ -752,11 +755,13 @@
<!-- <h3 id="go">Go</h3> -->
<h3 id="java">Java (GCJ)</h3>
+
<p>The GCC Java frontend and associated libjava runtime library have been
removed from GCC.</p>
<!-- .................................................................. -->
<h2 id="jit">libgccjit</h2>
+
<p>The libgccjit API gained support for marking calls as requiring
tail-call optimization via a new entrypoint:
<a href="https://gcc.gnu.org/onlinedocs/jit/topics/expressions.html#gcc_jit_rvalue_set_bool_require_tail_call">gcc_jit_rvalue_set_bool_require_tail_call</a>.</p>
@@ -933,7 +938,8 @@
<h3 id="nvptx">NVPTX</h3>
<ul>
<li>OpenMP target regions can now be offloaded to NVidia PTX GPGPUs.
- See https://gcc.gnu.org/wiki/Offloading on how to configure it.</li>
+ See the <a href="https://gcc.gnu.org/wiki/Offloading">Wiki on how
+ to configure it</a>.</li>
</ul>
<h3 id="powerpc">PowerPC / PowerPC64 / RS6000</h3>