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
namespace
s 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