From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2125.outbound.protection.outlook.com [40.107.105.125]) by sourceware.org (Postfix) with ESMTPS id 0F4BC3858D33 for ; Tue, 6 Jun 2023 10:29:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0F4BC3858D33 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=k9xkbnh89mhL5UhEe1zrZXh0mUj8RWUOC6PV2+FtphTO5ZAYjwdm5bz9pORGE3N2wUMyqGCw9YMEvNNIb3jtFF+OmCGVPIAowcSpAUMuDrCPJ2wz7kDU835CN7hTKiBUJV+cjCTeGwQ2En99zE2SqQn9sa5oGMXmgW46RVGsLSLEjFjLEOoWm2GlFqcHaJIpuCxHu/LowtjRl+ZYVe/eeAdSeK+qBs9W4IX6MvUXqHfyRMLyP00J5MQfCcwOOdY/NHv9cKgXFUitbtsmR/PiBwNrXrzxREugrxRSXWvOAG8USoNpvHxtEbDlQwYB8/POZjbNWvHzcHxouVPCAAAV1Q== 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=BZaSTPubC5rJcvh84pwZCt1ishJe771c7fHlUfJ31X8=; b=BgfIu7HSzJXGcmEnY6Y1qZRPF6Jkfiys8cyQp7AR12YXnzZsKLH7qdsaI+ajCgiGugDrlpldeatK2lc4GW+aNJLd3OlU9yAeDCc4F/+GrJbZjcesPKRvw1tC51ocqJ7wjpdKmuuThvGFzDoyTZTp11gPZeEUCrTsomMWvH7BrUlug17NB7kxPvUI65OpSGmbS9eZGe4TAleaHHjO2T+eXb1BopguuL1+rEFMlRtE/S6uvQFSEY322JwmMLghbN3hfXYyt1PwyFxdCVFxkOhVfn/lvZrUiC2IKv0RGbeE8v/ESJnQMSCs85FYl4uEZmYJAv110/joH03PPvNFP1jKtQ== 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=BZaSTPubC5rJcvh84pwZCt1ishJe771c7fHlUfJ31X8=; b=Acg5vBXtdj/isJFxbpGvOoUw7g6yDVomGWBJnzevuqJUW/eo1Of0pIE7UzVJ0OpsMuAd8xV1NAY/JN3/bTuu476YraWT9yYDxj8358NFsLByTkNOuzbqe2sLmjm7CWdF24xCCrnahiJ8tuYqO3eU5M3y3ZzxJPGF6yfuwptl/+4= Received: from DB9PR03MB7163.eurprd03.prod.outlook.com (2603:10a6:10:1ff::9) by DBBPR03MB6778.eurprd03.prod.outlook.com (2603:10a6:10:201::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.32; Tue, 6 Jun 2023 10:29:48 +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; Tue, 6 Jun 2023 10:29:48 +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/ogxWL2Axq90KpqAgAlvZfg= Date: Tue, 6 Jun 2023 10:29:48 +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_|DBBPR03MB6778:EE_ x-ms-office365-filtering-correlation-id: 376a97a4-14cf-4c9b-788c-08db6678f444 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BUNSBJzBUqK9kQDX8mCWZ+FYkVk/5ZbArQLv7ED0tbqM14b7yVg+hNK9cdlWLpVBJLcDcwWRi4U4FDQ2Oi1uSmfM8YRnGFQw6HR77UC0BFGlklEa1pCqADxTEQ5BkkpdhfZ97r+zRR99WQ2alxGa4Hr0qZ9z/sHbz1XoliJuKSXR+30LUWrIFNDQWgmfz3XuN9iDg9/J0uh9sG/srDZCg7evWnklqsQ9xpRyT/GA/dKvzr7Gua/RomiEYPbnlP3gaw817AvrdmkrqJjbKWHOxD/zzep6zxBJ+7CfOg5PWp8sSc3OX8cmMbC8HFjZevmf/+4t2fGE6THmF2WBrJTjhbNhJGK9IH4eUPyiFQ4dUbFsMdg+jnWdJHgQIb/1kXyOjAz3GJKqMM8ERc8/0SUaHWgMrNtqcxQF6neJgE6oGLtUX6x8qzabvFi4Y4srC2WemPRBUEm8+bnNisrWrK89brO/XvXmFjtPRKoXrJyYvbLL0KuaPx3Kz+6VxldcnqKFn4vA7bgPKB1EDCjae338xej//RmXXG3Ooj0GlSprXXyDyGJRm4NVPQGq7F+fV8FIfgPYWbD2BJ0wDdgaL7LR4CJJK6RGqNVOG24ITBPOXq0= 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)(396003)(376002)(366004)(136003)(39830400003)(346002)(451199021)(53546011)(107886003)(9686003)(6506007)(38100700002)(41300700001)(7696005)(26005)(84970400001)(186003)(83380400001)(71200400001)(478600001)(54906003)(122000001)(66446008)(91956017)(66556008)(64756008)(6916009)(66476007)(55016003)(76116006)(66946007)(316002)(4326008)(5660300002)(8676002)(52536014)(8936002)(2906002)(33656002)(86362001)(38070700005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?a0Ftb3Ryd1FCSTNJeE42V2w1cFZvOXBLWnFpanJvbnhYUzMxQmlsMXh6?= =?iso-2022-jp?B?czhERlU4dVFnU0pyYzA1U0xFRHlwbVZ0WklvSzg1TlZoeENuYzcybHZO?= =?iso-2022-jp?B?U3hlckxhdDA5aUcyRUJRM2pPdmdHWVhpejE2MzBwdktOekkzRXpsSVNL?= =?iso-2022-jp?B?QUFaaGhzTHUrSmRVMys1amZBU2ZUWVJLYWhNUk40bnlDVEpCN0J4dS9j?= =?iso-2022-jp?B?eXhZaG1meXJpRjZxSDNIQi9pU1ZLTEk5cXpuU0pIdjFNTUZucFBuNzht?= =?iso-2022-jp?B?ZmtzdmVZMERsQVJ3cVcxcmJRb2ltUDJKczc5V3Y5aHV0enViZ1FxQ3dE?= =?iso-2022-jp?B?WC9zbUVRWmFlMnl3THNxdkl4MllrNXk1aHExRG9TS1d0czJkbkZQVGRx?= =?iso-2022-jp?B?TEQvaW90QSt3c2J3eWhiYjIyQVR4Ym51Q3ZweHJmUW1tNFBlcWUvYVU1?= =?iso-2022-jp?B?eDBwVEdOL094VmpsTy9veU5nTzBBejQzWVF1aVoydWljQXhOdVpGZ2Q1?= =?iso-2022-jp?B?S25CTXNrWmJ6eERUNk1zSWNjdDF5Y1NsMHBxeVU1UGo4V1hvQm13Vm1Q?= =?iso-2022-jp?B?ODhzdHB1NWYvZU9BTVVCSEVDTjM4dlNscDFWNkJ3d0ZWeCs5ZzJZdjQw?= =?iso-2022-jp?B?NWdHc0haUEl2OW9LbXQzQkM2Q3RhYzhuSjM5MkRvakZ6SDRpUzhzUm9V?= =?iso-2022-jp?B?dHRhWDVqaXNIMGRPWlZKWTJyWkR6dmtZcnBSTCtwcWZlQlNLcG1CRkFD?= =?iso-2022-jp?B?YUxZZG9sMURYQU9KV0p0UW9RbEZFb3ozYlBOQWNjZE0yQTA5TWNFLzA2?= =?iso-2022-jp?B?NHdBeXh5VWk3YTFEL3NubkRramRYNUMvUjQycGVOb0hvVWxtaVRwclJZ?= =?iso-2022-jp?B?eXhvaW1oZER4dmRNSitVVC9YNDRiOTBZOEFVNkE2bDY0ekEzN0hZUCtm?= =?iso-2022-jp?B?THQwVktGd0VCQVJmNFRCUFBTeUxNRmtLb00wTHl3NmZqL2FSMElRQVdR?= =?iso-2022-jp?B?VDhxenZLS2k3bloxV25ha1BibUh5VnAwOXFmZlVmRTFTRXhzNDBJa1VC?= =?iso-2022-jp?B?QXV5Qlk0MkwvMEMvc3BVcEF4bU9lc3pRTzY4REVnL3BiTHhkRzY2bzNU?= =?iso-2022-jp?B?WERlSHZoNmZpUkFTTFJnNnppekk2aTd4VXdVTmlKQlRtaXZCb3VHcE5P?= =?iso-2022-jp?B?aEk2OHVYNEd0MnZwVld3N3RIVGdGckszZ3crdlFGZHRqc1dHZ1VkVk5E?= =?iso-2022-jp?B?WTY1aDQ0NDNHNzV2dGZOaE5RekRJUUdxcjc4QW55aGRxNVFraDd3dmZs?= =?iso-2022-jp?B?bUFreDZETFNCaUdLT3hvcHFJckJ4OTUrdlB1bjMxTUdtRlBXdHo2d2R3?= =?iso-2022-jp?B?eGxJcDg0V1dWRUphNXZZYXhwd29UQnRPU0o5LzdKOFptRjhEdm9WcjVt?= =?iso-2022-jp?B?VnJCYnJmUEl0R0lFSE9SOW4yOGdKMi9HSHBOcnY3ajdxNHV4M3p4aFRJ?= =?iso-2022-jp?B?cHlyVW1HSm1VY2JVczUxcUFzWDQrMlpXZTNlQm1JVEFvcm9xWjFrdnlM?= =?iso-2022-jp?B?TFpjM1ZXUzJNWDU0Wkk1MFhJQlJRdURuY05vWEpEVSs4TUg3MFhGczZj?= =?iso-2022-jp?B?ZHJEU2MzQkFmSjg0bnNuaWZIYkYwL25QWlZPUzdieFlYTktRU2dJVUlU?= =?iso-2022-jp?B?VTJlejFGTCtXN1phRloyZ3VlQjNZeDQxZlprbGVnaHZ5b05TbG5iT2JT?= =?iso-2022-jp?B?Z091Tk1XOEQxdnkwY1ZrMHVNMU5rdm93bDVJK2JlYjZYYnAxZm5FMmdz?= =?iso-2022-jp?B?UkIvaG1SMGh1SmsyR0lVRGx3VGNnZHFXTEJGam04MllUQ2k2YU5OL3JZ?= =?iso-2022-jp?B?RHVGR3lhbm9GK0V2MStmQWFXek5iV2cvMHNWdlQ5TzZ0R3VWV3FaQ0Rw?= =?iso-2022-jp?B?T2hWVUoveEZGUjVZenVhQ0Job0FObTRuck1oNkYzaUFQbGRzcGdacWZ3?= =?iso-2022-jp?B?VHhtVHdRMldhOGlObGJkTnVmdC9CazVNeVAzOStEN0NhQXUvYjZoelZN?= =?iso-2022-jp?B?ZjF5cUd5WXMwS01GRTVlZDM3djVHMmUvUmd2a2VFVzVrRkQ1L1Z4SzZt?= =?iso-2022-jp?B?U3BxcnNmckpVb2ZOVFBaeUQwR1RvTERKUHJ1QkpCUXpqNldmVHVSMGRu?= =?iso-2022-jp?B?WFNDbUpNNzgxK3JPQ3BUZzZzMnM2YWhybGJXSE9UNUU1dEpxcUlDa2xB?= =?iso-2022-jp?B?QU14UHczS0RZZmpYRDJYbEk2Qzc3VjRIVVJVMzhSOS9WWldHby9SVkV1?= =?iso-2022-jp?B?bjBFLw==?= Content-Type: text/plain; charset="iso-2022-jp" 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: 376a97a4-14cf-4c9b-788c-08db6678f444 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2023 10:29:48.2904 (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: JDLuBmDbojA/6Pu8tech4bu61ARdBUJZQ/ycXeC45LvKLQeJnxe7N4RV7DHpNTYkgb/1wHnOUs15cZdjU27gAMvgLdbalx/biUJJh+nTJJk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB6778 X-Spam-Status: No, score=-11.8 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 suppose that it is possible to check assembly.=0A= =0A= Following is part of diff before and after my patch:=0A= =0A= 29,32c29,32=0A= < sd $6,0($2)=0A= < sd $7,8($2)=0A= < sd $8,16($2)=0A= < sd $9,24($2)=0A= ---=0A= > sd $5,0($2)=0A= > sd $6,8($2)=0A= > sd $7,16($2)=0A= > sd $8,24($2)=0A= 63,66c63,66=0A= < sd $6,0($2)=0A= < sd $7,8($2)=0A= < sd $8,16($2)=0A= < sd $9,24($2)=0A= ---=0A= > sd $5,0($2)=0A= > sd $6,8($2)=0A= > sd $7,16($2)=0A= > sd $8,24($2)=0A= 138,141c138,141=0A= < ld $6,64($16)=0A= < ld $7,72($16)=0A= < ld $8,80($16)=0A= < ld $9,88($16)=0A= ---=0A= > ld $5,64($16)=0A= > ld $6,72($16)=0A= > ld $7,80($16)=0A= > ld $8,88($16)=0A= 148,151c148,151=0A= < ld $6,64($16)=0A= < ld $7,72($16)=0A= < ld $8,80($16)=0A= < ld $9,88($16)=0A= ---=0A= > ld $5,64($16)=0A= > ld $6,72($16)=0A= > ld $7,80($16)=0A= > ld $8,88($16)=0A= 167,170c167,170=0A= < ld $6,0($16)=0A= < ld $7,8($16)=0A= < ld $8,16($16)=0A= < ld $9,24($16)=0A= ---=0A= > ld $5,0($16)=0A= > ld $6,8($16)=0A= > ld $7,16($16)=0A= > ld $8,24($16)=0A= =0A= What my patch effectively does it rearranges the data in=0A= registers when invoking a function. I don't know whether=0A= writing this testcase as an assembly check would make sense, =0A= because that would make the testcase much less readable.=0A= ________________________________________=0A= From: YunQiang Su =0A= Sent: Wednesday, May 31, 2023 12:05 PM=0A= To: Jovan Dmitrovic=0A= Cc: gcc-patches@gcc.gnu.org; Djordje Todorovic=0A= Subject: Re: [PATCH] mips: Fix overaligned function arguments [PR109435]=0A= =0A= Jovan Dmitrovic =1B$BP2=1B(B2023=1B$BG/=1B(B5= =1B$B7n=1B(B29=1B$BF|<~0l=1B(B 19:00=1B$B=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 | 18 +++++++++++++-=0A= > gcc/testsuite/gcc.target/mips/align-1.c | 33 +++++++++++++++++++++++++= =0A= > 2 files changed, 50 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 ca822758b41..2019b7cd7d9 100644=0A= > --- a/gcc/config/mips/mips.cc=0A= > +++ b/gcc/config/mips/mips.cc=0A= > @@ -6190,6 +6190,22 @@ mips_arg_partial_bytes (cumulative_args_t cum, con= st 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. 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 +6214,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.= target/mips/align-1.c=0A= > new file mode 100644=0A= > index 00000000000..816751b8099=0A= > --- /dev/null=0A= > +++ b/gcc/testsuite/gcc.target/mips/align-1.c=0A= > @@ -0,0 +1,33 @@=0A= > +/* Check that typedef alignment does not affect passing of function=0A= > + parameters. */=0A= > +/* { dg-do run { target { "mips*-*-linux*" } } } */=0A= =0A= Is it possible to check the result with something like=0A= scan-assembler=0A= scan-assembler-not=0A= instead of real running?=0A= =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= > 2.34.1=0A= >=0A=