From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2129.outbound.protection.outlook.com [40.107.8.129]) by sourceware.org (Postfix) with ESMTPS id ED0123858C54 for ; Wed, 7 Jun 2023 10:29:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org ED0123858C54 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=Syrmia.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Syrmia.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fA9WDlFERHRPzfACTN62CMwS/kTQsSLqQKHsUq5Db8h9nErTNwU7oz/BYbCCnkrYIQJeV3pAwMl/ypMNz682F7u6xTXkJSQOgu091WD1zXOsfrlkJiUJkSv0489/3wdctZqAn5NOxxFKhF3aAcKSVI9ZBUZgF33nZo/bDcDv60o9J29knXZjPSPBl38Al/kYr7xlM5Bh+PkGzzKa0To8UnHm5NFK1Ffq0j4eBbFQvNzZrITWjl8YYRDHso58ufRY6xwAvxv1EKHNVmRe0jBAENpNoqKEwlkY8ZaPvJII8xnMCeEGBKa6lWZXKQnOTXEI+/rkWeyRyzwS6J8SSM45BQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RvnHeOI6rNUPeKS3uc8qQU5yeZ6sJQeQRzwb/fDbDJo=; b=G2WMVYp76AjhEEpo729yr+EcnMOSjKIO9k2/Zm+Eo36UssiVKjEsBLHc2WXNa/gsSMIVTEbCAhaEOQN82eBBCZCB8eoz8X+uzHlMs8NHd71GVbor3knRMeNx/RwsNZRP9FNixQaGdcRG0xk6LKw06QuWPKnRal6+ezX7aU4xi7i/ay7dIoboUnrHXzVJl41/RWPXh4zBLS3ZZ//6JZUTuG99T8bPHPSgizJqHjBPBz6vde893I1SjA85XYDDbKF04EYA2JU5UL25rOFT7MRoPJNGo6ANRmeGBj10bS59qOIJMsnWn2XEhQvxUiJdGSIELPpSNZCPj9rUM/xYz1Bpag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=syrmia.com; dmarc=pass action=none header.from=syrmia.com; dkim=pass header.d=syrmia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=syrmia.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RvnHeOI6rNUPeKS3uc8qQU5yeZ6sJQeQRzwb/fDbDJo=; b=hwqBVjjvT9x/q+p8VHU4Sxfx1yE1/wXz9T8fPVQdZdF0jTPJPnMH1vPd2SdWSVswTQyt8L213P2KJ05Pt8nISocBSBKqlyzO9KPGKs4QXXrKp7JucdDOxkJAKAtErqbcnRNCqAvyu2Jp2Zt9css+MnxZLbNfekJcWzZJ/++1sSM= Received: from DB9PR03MB7163.eurprd03.prod.outlook.com (2603:10a6:10:1ff::9) by DU0PR03MB9851.eurprd03.prod.outlook.com (2603:10a6:10:448::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.32; Wed, 7 Jun 2023 10:28:59 +0000 Received: from DB9PR03MB7163.eurprd03.prod.outlook.com ([fe80::a3ea:bbc0:9e7b:b472]) by DB9PR03MB7163.eurprd03.prod.outlook.com ([fe80::a3ea:bbc0:9e7b:b472%7]) with mapi id 15.20.6455.030; Wed, 7 Jun 2023 10:28:59 +0000 From: Jovan Dmitrovic To: YunQiang Su CC: "gcc-patches@gcc.gnu.org" , Djordje Todorovic Subject: Re: [PATCH] mips: Fix overaligned function arguments [PR109435] Thread-Topic: [PATCH] mips: Fix overaligned function arguments [PR109435] Thread-Index: AQHZkhkBnR7wjSmBR0Gb/ogxWL2Axq90KpqAgAlvZfiAAAswgIABhHrh Date: Wed, 7 Jun 2023 10:28:58 +0000 Message-ID: References: <20230529103254.2753472-1-Jovan.Dmitrovic@Syrmia.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=Syrmia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DB9PR03MB7163:EE_|DU0PR03MB9851:EE_ x-ms-office365-filtering-correlation-id: 2c285448-b1cd-482c-6c3b-08db67420143 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HlUM6kjk7aCKSfk62sWa0ql9BDsQnbueGdjzy1XnAB+jgw6//hAZmdbI4XwCJIwk+gab3DC2PCKcO1PzDjeCN8wlqGK0WUSJJcicWr+n6nrzphxTIge7xOhRnkdyMmXq51w720UEznW/CHCtMXsg+1NRvIGMX9z8IYQC2pLFNC2JGMo5aE3eduWLUH6yEMlnNc9qKLGVuZdz9CdDFzon9C1iKlc4WsRZg0wE7jtxQZ+ZTsg1YOeMbyT9+KmznBbAyn2x4a80z9uuA1HGP9+Gp8QUaleRM/xs0LF/1ML4iYzzMQKNonzOlNaXsnXsspaOjs+hr6j8V+C0RpP3o3NUga9tTuhVlkAi0XEHwj95wg+Goe5zUzHc7mqsCgVB2H41lzpf2YFY7m/KSFWQVLBaH3W+Smf/hRy7V0TwVsFev0sgPs0pGKCh0i0dGTVMF98Dq1b1eQbL0+ktwp9ddk6Tgst6Mt7h6X/QYQTdEaQ5447adx0KltT2nTEIETMr7sooNxNwSVsgaFOQ34riRUyXIa0C6v+AamCWAsFPF8Ago0VMiK3dhe/cKNRPksD7q4B1UgFTubsdtk6ctNouYvZ6BqIQjYTYHB6Z01Rhr7NxJak= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR03MB7163.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(376002)(366004)(396003)(136003)(346002)(39830400003)(451199021)(2906002)(83380400001)(33656002)(86362001)(38070700005)(38100700002)(122000001)(55016003)(84970400001)(7696005)(52536014)(41300700001)(5660300002)(316002)(107886003)(8676002)(8936002)(54906003)(478600001)(66556008)(91956017)(66946007)(66446008)(71200400001)(64756008)(76116006)(66476007)(4326008)(9686003)(53546011)(6506007)(6916009)(26005)(186003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Qzri2guADVebDcD4sSjrzFH0mULNF+O7JrG5vU7CD/Qnjn2PIDTxlmrTyz?= =?iso-8859-1?Q?b5vVUDfWOkqqkGmREl6lMKlTeQKYbJgZnGoOeOVXIOkuTHQjQ4MhGtffBm?= =?iso-8859-1?Q?6mJ8gW16k5zsL2QMs2ovexSRpb9Sky3y0bKKZb4IXm9higyLy47RHzboe6?= =?iso-8859-1?Q?wVN/LllZz+O5C6KPJX3IY7GmxH1ovyyRsS2VyqFGvKiUBRG9/xiLIPnftX?= =?iso-8859-1?Q?Q2/deU2X8Q0cAVxpZqP+LB1WY+2Tpb79gnIKpwJ0VUeaD1riGBH1xEXWka?= =?iso-8859-1?Q?MKC1oV1rw36al92nuMhLLZs5X01m2ohY7BZpB9C9oYiCfvW5+2CUcks4OO?= =?iso-8859-1?Q?DjHXMV1dXGDQDbkyohf1hmQikLtOQuG/AukxevE28kCndns8/cZMiaX+It?= =?iso-8859-1?Q?tB/UfuItYcd2o9W/FCOGF3WMBhwtq+IKxilmfDqd9afB0rFIn5skzXGEyZ?= =?iso-8859-1?Q?5vOcUg4Y343gINjrCSCLbRYkJZFSPKIcyBjRuQeyYhnS4ePu/IcXBGL87g?= =?iso-8859-1?Q?uqISbKWT45isM9RHBO9q/1yt8XjJRqwzEJaSHIcpZGHrutQ5dhIv9IWySC?= =?iso-8859-1?Q?P/hJgjW1SCaMkhLTBqH4O/H4RUADgN7Lkazru4/3eb+2Pcc1etxHTnryxw?= =?iso-8859-1?Q?na4dskAzw2vPS09jwiRUdYwZtNxTFX6GnPN6UTk9RVkBzG8ia2R3vLoo7R?= =?iso-8859-1?Q?aasR987whdionGIR2mp3z3C4Y/DP+hgz8Bh/qaoNSOOKOpV4sieQqF3Voe?= =?iso-8859-1?Q?jwtsd1pGHZTTaPvrmOy67CrF+3DOJD7FS7eWBeUUMI4M2lvx40vgRiJFHY?= =?iso-8859-1?Q?9/erp4T7ZO2UL2GDe5sGz66ncHAMI3D+ACtBBtpgOMZ4/PAIbNdc9BLHuk?= =?iso-8859-1?Q?tRgL4IwuxtmwqIUCfq8kQr22dKM79WbL71gd1QPEV0y32NeWqdPHjGppTm?= =?iso-8859-1?Q?6rGJXYWKsfprLxXROnCnF8FR93VicQHmczT1v6e8RGIsj2M3kig6J60LP8?= =?iso-8859-1?Q?aVdCKcI4VDxrwmXS9oYcXTPttEe9wd3j5cANMx309obRnR9qB5gUCWqavg?= =?iso-8859-1?Q?86fpB5Gcz4F5TZ91JS69aqY71LLsf8khMVLv0/tgJq2gT3xZIBCmapbbh6?= =?iso-8859-1?Q?ZahUUMfCXbn8kP22PHfWj/I9rHw0dhYGp2kPFH+IR6EXKCjOhO8XUppsom?= =?iso-8859-1?Q?VC6DHcl+yvDcFt+mEB49qI1uc71dRc/ehm/ncTYRdx4n+eyWsGFxW71cJ/?= =?iso-8859-1?Q?iCk/GqQCSMfREynA6+H93w86rfzQQUWQyByF140nncU2fVgnNtT0RP6vqS?= =?iso-8859-1?Q?mK+ZHJ0rz0CXeoCGMvTmCzHdo7apz+ytM/lwBR7hpOj2jlO7KvvIAE+w7W?= =?iso-8859-1?Q?8TPDPNsf6R/9ZtgW/+hC9qzr+hCwHz4bd6iQ5B/h1VdSWTIo41B5pEki8E?= =?iso-8859-1?Q?VrU70Ntvt20JjLT0N06u2/URbI0T35021EbVQd3FM3idQJ6avqOBf/giTq?= =?iso-8859-1?Q?GziGBtvobFmUndMGGJE/gUPRWkAT/tLKqw7+uX0SpBkhcHUwyphejehjEG?= =?iso-8859-1?Q?PYikjtpPaHfKhgWSBhK2vVd2Rilq6ymanbqUhHFS3df3RFIwhog9BeV6/F?= =?iso-8859-1?Q?TIf2q+C0zeboLs2tWclWYZyAjCxG+VaNqU?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: syrmia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB9PR03MB7163.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c285448-b1cd-482c-6c3b-08db67420143 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2023 10:28:58.9237 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 19214a73-c1ab-4e19-8f59-14bdcb09a66e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 3DgWc0aBR24CJZjYuDU72zFZqHButyvW6EK4P8mZDCXzzLmvSeKFd5LPARg/pakolPjxSfH55zxyvk8EfkyX/5OxIAMqjzXwA8M9njxeotU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9851 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,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 List-Id: I see what you mean now, so I've made adjustment in order for testcase to w= ork=0A= on assembly. Following is the updated patch.=0A= =0A= Regards,=0A= Jovan=0A= =0A= >From 2744357b5232c61bf1f780c4915d47b19d71f993 Mon Sep 17 00:00:00 2001=0A= From: Jovan Dmitrovic =0A= Date: Fri, 19 May 2023 12:36:55 +0200=0A= Subject: [PATCH] mips: Fix overaligned function arguments [PR109435]=0A= =0A= This patch changes alignment for typedef types when passed as=0A= arguments, making the alignment equal to the alignment of=0A= original (aliased) types.=0A= =0A= This change makes it impossible for a typedef type to have=0A= alignment that is less than its size.=0A= =0A= Signed-off-by: Jovan Dmitrovic =0A= =0A= gcc/ChangeLog:=0A= PR target/109435=0A= * config/mips/mips.cc (mips_function_arg_alignment): Returns=0A= the alignment of function argument. In case of typedef type,=0A= it returns the aligment of the aliased type.=0A= (mips_function_arg_boundary): Relocated calculation of the=0A= aligment of function arguments.=0A= =0A= gcc/testsuite/ChangeLog:=0A= PR target/109435=0A= * gcc.target/mips/align-1.c: New test.=0A= ---=0A= gcc/config/mips/mips.cc | 19 ++++++++++++-=0A= gcc/testsuite/gcc.target/mips/align-1.c | 38 +++++++++++++++++++++++++=0A= 2 files changed, 56 insertions(+), 1 deletion(-)=0A= create mode 100644 gcc/testsuite/gcc.target/mips/align-1.c=0A= =0A= diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc=0A= index c1d1691306e..20ba35f754c 100644=0A= --- a/gcc/config/mips/mips.cc=0A= +++ b/gcc/config/mips/mips.cc=0A= @@ -6190,6 +6190,23 @@ mips_arg_partial_bytes (cumulative_args_t cum, const= function_arg_info &arg)=0A= return info.stack_words > 0 ? info.reg_words * UNITS_PER_WORD : 0;=0A= }=0A= =0A= +/* Given MODE and TYPE of a function argument, return the alignment in=0A= + bits.=0A= + In case of typedef, alignment of its original type is=0A= + used. */=0A= +=0A= +static unsigned int=0A= +mips_function_arg_alignment (machine_mode mode, const_tree type)=0A= +{=0A= + if (!type)=0A= + return GET_MODE_ALIGNMENT (mode);=0A= +=0A= + if (is_typedef_decl (TYPE_NAME (type)))=0A= + type =3D DECL_ORIGINAL_TYPE (TYPE_NAME (type));=0A= +=0A= + return TYPE_ALIGN (type);=0A= +}=0A= +=0A= /* Implement TARGET_FUNCTION_ARG_BOUNDARY. Every parameter gets at=0A= least PARM_BOUNDARY bits of alignment, but will be given anything up=0A= to STACK_BOUNDARY bits if the type requires it. */=0A= @@ -6198,8 +6215,8 @@ static unsigned int=0A= mips_function_arg_boundary (machine_mode mode, const_tree type)=0A= {=0A= unsigned int alignment;=0A= + alignment =3D mips_function_arg_alignment (mode, type);=0A= =0A= - alignment =3D type ? TYPE_ALIGN (type) : GET_MODE_ALIGNMENT (mode);=0A= if (alignment < PARM_BOUNDARY)=0A= alignment =3D PARM_BOUNDARY;=0A= if (alignment > STACK_BOUNDARY)=0A= diff --git a/gcc/testsuite/gcc.target/mips/align-1.c b/gcc/testsuite/gcc.ta= rget/mips/align-1.c=0A= new file mode 100644=0A= index 00000000000..5c639bee274=0A= --- /dev/null=0A= +++ b/gcc/testsuite/gcc.target/mips/align-1.c=0A= @@ -0,0 +1,38 @@=0A= +/* Check that typedef alignment does not affect passing of function=0A= + parameters. */=0A= +/* { dg-do compile { target { "mips*-*-linux*" } } } */=0A= +/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */=0A= +=0A= +#include =0A= +=0A= +typedef struct ui8=0A= +{=0A= + unsigned v[8];=0A= +} uint8 __attribute__ ((aligned(64)));=0A= +=0A= +unsigned=0A= +callee (int x, uint8 a)=0A= +{=0A= + return a.v[0];=0A= +}=0A= +=0A= +uint8=0A= +identity (uint8 in)=0A= +{=0A= + return in;=0A= +}=0A= +=0A= +int=0A= +main (void)=0A= +{=0A= + uint8 vec =3D {{1, 2, 3, 4, 5, 6, 7, 8}};=0A= + uint8 temp =3D identity (vec);=0A= + unsigned temp2 =3D callee (1, identity (vec));=0A= + assert (callee (1, temp) =3D=3D 1);=0A= + assert (temp2 =3D=3D 1);=0A= + return 0;=0A= +}=0A= +=0A= +/* { dg-final { scan-assembler "\tsd\t\\\$5,0\\(\\\$\[0-9\]\\)" } } */=0A= +/* { dg-final { scan-assembler "\tsd\t\\\$6,8\\(\\\$\[0-9\]\\)" } } */=0A= +/* { dg-final { scan-assembler "\tsd\t\\\$7,16\\(\\\$\[0-9\]\\)" } } */=0A= -- =0A= 2.34.1=0A= =0A= =0A= =0A= =0A= --=0A= YunQiang Su=0A=