From patchwork Tue Sep 3 08:20:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 1979887 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=Kz2kow4i; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Wydtd62tZz1yg9 for ; Tue, 3 Sep 2024 18:23:37 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A79C3385EC26 for ; Tue, 3 Sep 2024 08:23:35 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) by sourceware.org (Postfix) with ESMTPS id 3BD6B385E45D for ; Tue, 3 Sep 2024 08:21:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3BD6B385E45D Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3BD6B385E45D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::12e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1725351683; cv=none; b=krxoaW3fNXGTh5jI60EP+Z+Pu66wZTQubm44y0FYB1EjdkyUKXHzOwfyDBCPeUSlAzOGga7GLFaa8O4C0VywjkXb++J+OvNp1KlpAv3ZyUfvoZKOqG4Mgi4jbHSBheoh7cB5ekcFU3N7xXS145zXOxwreC0JJpze+7GAy6QRcVQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1725351683; c=relaxed/simple; bh=SSi424NYbd7uQsCI2DVXX5OKFu4EUoN3EvkYc70JMCY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=AhuKopPy4bC6DkAFiwnLmyYpGvXUrjhtz5M3wkhHLGt6zL4c5C7goU0B0bvg0SRSB2xtqJbMCYOqk7T+K0LHlGoK55qnvwpEdRuo1NHe5qkVXiltFXA18AbRSN0jjyPZNmDuPh0tLmbVM4nbMSQQ76urjySFfJSG2l07pVtNgbU= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-533496017f8so6752381e87.0 for ; Tue, 03 Sep 2024 01:21:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1725351678; x=1725956478; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P2GDZA5htRmcbvmltebzGTR0VNagsncsAzI2dJTJBnU=; b=Kz2kow4ixIqjGb5gZh1BArWGLQiUqQgfNN40Q4QWSmQWhqIuLZ4Yb+BRx1xEjAvU5G rntdjdcuppXv4mmmD/Dpst7XGQMH2g576Lr46mrCBtPWxPz0euQhg7INJZ3iAmwycHbk cnsZsvcKOdNtoP5Qo478iLt0sUDoIkvzIJIpCHRTwbRrT8qUSs3cnUaOCV4P0TeyIpBx xUJm1AcNG75kOTm2rObQ+NWEnVVFctT/u1ZYC6S4unzOrGCj5TmWwxMMlx1OhSRap4YW uNIPKIYqp4ijXTHV7SQiIj/Hknf9cbQAkRM2tAkljrV1RkpJ2eghhqFh6ApCT8H3G1SV d1kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725351678; x=1725956478; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P2GDZA5htRmcbvmltebzGTR0VNagsncsAzI2dJTJBnU=; b=E8jfz+cjrYaeGQhxWAAVSed6LO0VGOLMzoKf8pswX/sha8eH4c2fW03pl2juGmqLV5 T6n4m5Zg92srbsBP+W9Q6LMbGAt9nLf0GLboMmfrM+My9MP5DitWkXRzV4KbR53+s5en xjGILufxByK/Z0ZJqceO53NiqXqa7OWJdx/xydtskhqUUDtVHp5hkPZf7YYfoIZ62AB3 V/FvZVG/VNfSPldLTX11NMKfEgfw1Pjshs+Lc9BmQAX88GxxxlG846bsGw/SgrJAM6s2 wSJ8NzTIZuA5NTVbqonHf1zF+zTQwlIKJcSyZrNLBb+XuMutSPhQR0lSj0F6QNKm46H4 k/fg== X-Gm-Message-State: AOJu0YwkTjUMXrjyCfCiwvMg5a6JsqUtnod5AYz69Pa86FtD5ZXPK+HM On8XAbzeHqvcpqtrnS7F84eX0/eNHEGLZoK/VJ+3nXhegY5I6Emfil4f+tbSleevEJeyNsc4U5s = X-Google-Smtp-Source: AGHT+IGGxYnr3aGmOgPGGcaD8N29toArCSatZ4frGfXox0RYarWAxkK+DBf0q0ROoJBAdGgDPKlMHQ== X-Received: by 2002:a05:6512:39c4:b0:533:aa6:767b with SMTP id 2adb3069b0e04-53546af922cmr9255828e87.10.1725351678053; Tue, 03 Sep 2024 01:21:18 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-42bb6e27467sm162553425e9.38.2024.09.03.01.21.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Sep 2024 01:21:17 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 07/10] ada: Pass unaligned record components by copy in calls on all platforms Date: Tue, 3 Sep 2024 10:20:59 +0200 Message-ID: <20240903082102.2268026-7-poulhies@adacore.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240903082102.2268026-1-poulhies@adacore.com> References: <20240903082102.2268026-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou This has historically been done only on platforms requiring the strict alignment of memory references, but this can arguably be considered as being mandated by the language on all of them. gcc/ada/ * gcc-interface/trans.cc (addressable_p) : Take into account the alignment of the field on all platforms. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/gcc-interface/trans.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc index 3f2eadd7b2b..7cced04361d 100644 --- a/gcc/ada/gcc-interface/trans.cc +++ b/gcc/ada/gcc-interface/trans.cc @@ -10289,9 +10289,8 @@ addressable_p (tree gnu_expr, tree gnu_type) check the alignment of the containing record, as it is guaranteed to be not smaller than that of its most aligned field that is not a bit-field. */ - && (!STRICT_ALIGNMENT - || DECL_ALIGN (TREE_OPERAND (gnu_expr, 1)) - >= TYPE_ALIGN (TREE_TYPE (gnu_expr)))) + && DECL_ALIGN (TREE_OPERAND (gnu_expr, 1)) + >= TYPE_ALIGN (TREE_TYPE (gnu_expr))) /* The field of a padding record is always addressable. */ || TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_expr, 0)))) && addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE));