From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id 617A0395A40E; Thu, 7 May 2020 10:24:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 617A0395A40E To: gcc-cvs-wwwdocs@gcc.gnu.org Subject: gcc-wwwdocs branch master updated. f1d2be6c9fcc52d676266e7ede123953d150aaf3 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 01424bc265a033851b93d0ce0e84df3ce519f429 X-Git-Newrev: f1d2be6c9fcc52d676266e7ede123953d150aaf3 Message-Id: <20200507102456.617A0395A40E@sourceware.org> Date: Thu, 7 May 2020 10:24:56 +0000 (GMT) From: Jonathan Wakely X-BeenThere: gcc-cvs-wwwdocs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs-wwwdocs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 May 2020 10:24:56 -0000 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 f1d2be6c9fcc52d676266e7ede123953d150aaf3 (commit) from 01424bc265a033851b93d0ce0e84df3ce519f429 (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 f1d2be6c9fcc52d676266e7ede123953d150aaf3 Author: Jonathan Wakely Date: Thu May 7 11:24:04 2020 +0100 Document C++17 ABI changes in GCC 10 diff --git a/htdocs/gcc-10/changes.html b/htdocs/gcc-10/changes.html index f5b70eb4..52fd6e6a 100644 --- a/htdocs/gcc-10/changes.html +++ b/htdocs/gcc-10/changes.html @@ -30,6 +30,12 @@ a work-in-progress.

Caveats

    +
  • + An ABI incompatibility between C++14 and C++17 has been fixed. On some + targets a class with a zero-sized subobject would be passed incorrectly + when compiled as C++17 or C++20. + See the C++ notes below for more details. +
  • The deprecated Profile Mode and array_allocator extensions have been removed from libstdc++. @@ -409,6 +415,39 @@ int get_naïve_pi() { The attribute deprecated can now be used on namespaces too.
  • +
  • + The ABI + of passing and returning certain C++ classes by value changed + on several targets in GCC 10, including + AArch64, + ARM, + PowerPC ELFv2, + S/390 + and + Itanium. + These changes affect classes with a zero-sized + subobject (an empty base class, or data member with the + [[no_unique_address]] attribute) where all other non-static + data members have the same type (this is called a "homogeneous aggregate" + in some ABI specifications, or if there is only one such member, + a "single element"). + In -std=c++17 and -std=c++20 modes, classes with + an empty base class were not considered to have a single element or + to be a homogeneous aggregate, and so could be passed differently + (in the wrong registers or at the wrong stack address). This could make + code compiled with -std=c++17 and -std=c++14 + ABI incompatible. This has been corrected and the empty bases are + ignored in those ABI decisions, so functions compiled with + -std=c++14 and -std=c++17 are now ABI compatible + again. + Example: + struct empty {}; struct S : empty { float f; }; void f(S);. + Similarly, in classes containing non-static data members with empty + class types using the C++20 [[no_unique_address]] attribute, + those members weren't ignored in the ABI argument passing decisions + as they should be. Both of these ABI changes are now diagnosed with + -Wpsabi. +

Runtime Library (libstdc++)

----------------------------------------------------------------------- Summary of changes: htdocs/gcc-10/changes.html | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) hooks/post-receive -- gcc-wwwdocs