From mboxrd@z Thu Jan 1 00:00:00 1970
Return-Path:
Received: from us-smtp-delivery-124.mimecast.com
(us-smtp-delivery-124.mimecast.com [170.10.129.124])
by sourceware.org (Postfix) with ESMTPS id 80C8F385840C
for ; Wed, 30 Mar 2022 10:08:03 +0000 (GMT)
DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 80C8F385840C
Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com
[66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS
(version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
us-mta-455-1CcDa8TWOVmE9M4pbEWNXA-1; Wed, 30 Mar 2022 06:07:59 -0400
X-MC-Unique: 1CcDa8TWOVmE9M4pbEWNXA-1
Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com
[10.11.54.8])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9C8273C021AD;
Wed, 30 Mar 2022 10:07:58 +0000 (UTC)
Received: from tucnak.zalov.cz (unknown [10.39.192.15])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 54B43C07F48;
Wed, 30 Mar 2022 10:07:58 +0000 (UTC)
Received: from tucnak.zalov.cz (localhost [127.0.0.1])
by tucnak.zalov.cz (8.16.1/8.16.1) with ESMTPS id 22UA7tLF158511
(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);
Wed, 30 Mar 2022 12:07:56 +0200
Received: (from jakub@localhost)
by tucnak.zalov.cz (8.16.1/8.16.1/Submit) id 22UA7tKW158510;
Wed, 30 Mar 2022 12:07:55 +0200
Date: Wed, 30 Mar 2022 12:07:55 +0200
From: Jakub Jelinek
To: gcc-patches@gcc.gnu.org
Subject: [wwwdocs] Document zero width bit-field passing ABI changes in
gcc-12/changes.html [PR104796]
Message-ID:
Reply-To: Jakub Jelinek
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH,
DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT,
RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,
SPF_NONE, TXREP,
T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4
X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on
server2.sourceware.org
X-BeenThere: gcc-patches@gcc.gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Gcc-patches mailing list
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Wed, 30 Mar 2022 10:08:05 -0000
Hi!
This patch documents the PR102024 ABI changes.
The x86-64, ARM and AArch64 backends refer to this in their -Wpsabi
diagnostics.
Ok for wwwdocs?
diff --git a/htdocs/gcc-12/changes.html b/htdocs/gcc-12/changes.html
index 689feeba..dc0e4074 100644
--- a/htdocs/gcc-12/changes.html
+++ b/htdocs/gcc-12/changes.html
@@ -28,6 +28,31 @@ a work-in-progress.
Caveats
+ -
+ An ABI incompatibility between C and
+ C++ when passing or returning by value certain aggregates with zero
+ width bit-fields has been discovered on various targets.
+ As mentioned in PR102024,
+ since the PR42217 fix in
+ GCC 4.5 the C++ front-end has been removing zero width bit-fields
+ from the internal representation of the aggregates after the layout of those
+ aggregates, but the C front-end kept them, so passing e.g.
+
struct S { float a; int : 0; float b; }
or
+ struct T { float c; int : 0; }
by value could differ
+ between C and C++. Starting with GCC 12 the C++ front-end no longer
+ removes those bit-fields from the internal representation and
+ per clarified psABI some targets have been changed, so that they
+ either ignore those bit-fields in the argument passing by value
+ decisions in both C and C++, or they always take them into account.
+ x86-64, ARM and AArch64 will always ignore them (so there is
+ a C ABI incompatibility between GCC 11 and earlier with GCC 12 or
+ later), PowerPC64 ELFv2 and S/390 always take them into account
+ (so there is a C++ ABI incompatibility, GCC 4.4 and earlier compatible
+ with GCC 12 or later, incompatible with GCC 4.5 through GCC 11).
+ RISC-V has changed the handling of these already starting with GCC 10.
+ GCC 12 on the above targets will report such incompatibilities as
+ warnings or other diagnostics unless -Wno-psabi
is used.
+
-
C:
Computed gotos require a pointer type now.
Jakub