On Thu, 2 Mar 2023, Jakub Jelinek wrote: > --- a/htdocs/gcc-13/porting_to.html > +++ b/htdocs/gcc-13/porting_to.html
> +<p>GCC 13 implements in C++ <a href="changes.html#cxx">excess precision > support</a> > +which has been implemented just in the C front-end before. The new behavior > is > +enabled by default in <code>-std=c++</code><em>NN</em> modes and when > +<code>FLT_EVAL_METHOD</code> is 1 or 2 affects behavior of floating point ^^^^^^ > +constants and expressions. E.g. for <code>FLT_EVAL_METHOD</code> equal > +to 2 on ia32: : > +will not abort with standard excess precision, because constants and > expressions > +in <code>float</code> or <code>double</code> are evaluated in precision of > +<code>long double</code> and demoted only on casts or assignments, but will > +abort with fast excess precision, where whether something is evaluated in > +precision of <code>long double</code> or not depends on what evaluations are > +done in the i387 floating point stack or are spilled from it. > + > +The <code>-fexcess-precision=fast</code> option can be used to request the > +previous behavior. I struggled a bit understanding this and so have come up with what I hope is simpler (without changing the meaning). What do you think of the change below? Gerald diff --git a/htdocs/gcc-13/porting_to.html b/htdocs/gcc-13/porting_to.html index 170da096..8a2822ff 100644 --- a/htdocs/gcc-13/porting_to.html +++ b/htdocs/gcc-13/porting_to.html @@ -122,12 +122,14 @@ the operand as an lvalue.<br> <h3 id="excess-precision">Excess precision changes</h3> -<p>GCC 13 implements in C++ <a href="changes.html#cxx">excess precision support</a> -which has been before implemented just in the C front end. The new behavior is -enabled by default in <code>-std=c++</code><em>NN</em> modes and e.g. when -<code>FLT_EVAL_METHOD</code> is 1 or 2 affects behavior of floating point -constants and expressions. E.g. for <code>FLT_EVAL_METHOD</code> equal -to 2 on ia32: +<p>GCC 13 implements <a href="changes.html#cxx">excess precision +support</a>, which was implemented just in the C front end +before, in C++. The new behavior is enabled by default in +<code>-std=c++</code><em>NN</em> modes and when +<code>FLT_EVAL_METHOD</code> is 1 or 2 and affects the behavior of +floating point constants and expressions.</p> + +<p>E.g. for <code>FLT_EVAL_METHOD</code> equal to 2 on ia32 <pre><code> #include <stdlib.h> @@ -139,11 +141,11 @@ will not abort with standard excess precision, because constants and expressions in <code>float</code> or <code>double</code> are evaluated in precision of <code>long double</code> and demoted only on casts or assignments, but will abort with fast excess precision, where whether something is evaluated in -precision of <code>long double</code> or not depends on what evaluations are -done in the i387 floating point stack or are spilled from it. +<code>long double</code> precision depends on what evaluations are +done in the i387 floating point stack or are spilled from it.</p> -The <code>-fexcess-precision=fast</code> option can be used to request the -previous behavior. +</p>The <code>-fexcess-precision=fast</code> option can be used to +request the previous behavior.</p> <h3 id="alloc-rebind">allocator_traits<A>::rebind_alloc<A::value_type> must be A</h3>