This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gcc-wwwdocs". The branch, master has been updated via 20a280fdead95b9a6e9071a6d167dac76cba616a (commit) via 5b1016426388b6cbe02a9a5251ea56a4c57eb35b (commit) from 110c00930de9064671c58225c0dd381504949a43 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 20a280fdead95b9a6e9071a6d167dac76cba616a Author: Jakub Jelinek Date: Thu Mar 2 15:23:15 2023 +0100 Mention C++ excess precision in GCC 13 porting_to. diff --git a/htdocs/gcc-13/porting_to.html b/htdocs/gcc-13/porting_to.html index 9a9a3147..5cbeefb6 100644 --- a/htdocs/gcc-13/porting_to.html +++ b/htdocs/gcc-13/porting_to.html @@ -120,5 +120,29 @@ the operand as an lvalue.
} +

Excess precision changes

+

GCC 13 implements in C++ excess precision support +which has been before implemented just in the C front-end. The new behavior is +enabled by default in -std=c++NN modes and e.g. when +FLT_EVAL_METHOD is 1 or 2 affects behavior of floating point +constants and expressions. E.g. for FLT_EVAL_METHOD equal +to 2 on ia32: + +


+#include 
+void foo (void) { if (1.1f + 3.3f != 1.1L + 3.3L) abort (); }
+void bar (void) { double d = 4.2; if (d == 4.2) abort (); }
+
+ +will not abort with standard excess precision, because constants and expressions +in float or double are evaluated in precision of +long double and demoted only on casts or assignments, but will +abort with fast excess precision, where whether something is evaluated in +precision of long double or not depends on what evaluations are +done in the i387 floating point stack or are spilled from it. + +The -fexcess-precision=fast option can be used to request the +previous behavior. + commit 5b1016426388b6cbe02a9a5251ea56a4c57eb35b Author: Jakub Jelinek Date: Thu Mar 2 15:22:41 2023 +0100 Mention some further finished C++23 papers in GCC13 and the assume attribute. diff --git a/htdocs/gcc-13/changes.html b/htdocs/gcc-13/changes.html index 410594ae..839b73d0 100644 --- a/htdocs/gcc-13/changes.html +++ b/htdocs/gcc-13/changes.html @@ -182,6 +182,10 @@ a work-in-progress.

-fanalyzer to detect misuses of file descriptors. +
  • A new statement attribute for C++23 P1774R8 Portable + assumptions support also in C or older C++: + __attribute__((assume(EXPR))); +
  • C

    @@ -290,6 +294,29 @@ a work-in-progress.

    Operator You Are Looking For (
    PR106644) +
  • P2362R3, Remove non-encodable + wide character literals and multicharacter wide character literals + (PR106647) +
  • +
  • P2448R2, Relaxing some + constexpr restrictions + (PR106649) +
  • +
  • P1467R9, Extended + floating-point types and standard names + (PR106652) +
  • +
  • P1774R8, Portable + assumptions + (PR106654) +
  • +
  • P2295R6, Support for + UTF-8 as a portable source file encoding + (PR106655) +
  • +
  • P2589R1, static operator[] + (PR107684) +
  • New warnings: ----------------------------------------------------------------------- Summary of changes: htdocs/gcc-13/changes.html | 27 +++++++++++++++++++++++++++ htdocs/gcc-13/porting_to.html | 24 ++++++++++++++++++++++++ 2 files changed, 51 insertions(+) hooks/post-receive -- gcc-wwwdocs