From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10041.outbound.protection.outlook.com [40.107.1.41]) by sourceware.org (Postfix) with ESMTPS id 27EF83AAA08C for ; Fri, 18 Jun 2021 15:33:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 27EF83AAA08C Received: from AM5PR0701CA0068.eurprd07.prod.outlook.com (2603:10a6:203:2::30) by PA4PR08MB6109.eurprd08.prod.outlook.com (2603:10a6:102:e2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.21; Fri, 18 Jun 2021 15:33:40 +0000 Received: from VE1EUR03FT056.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:2:cafe::ee) by AM5PR0701CA0068.outlook.office365.com (2603:10a6:203:2::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.7 via Frontend Transport; Fri, 18 Jun 2021 15:33:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT056.mail.protection.outlook.com (10.152.19.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.16 via Frontend Transport; Fri, 18 Jun 2021 15:33:40 +0000 Received: ("Tessian outbound d6f95fd272ef:v96"); Fri, 18 Jun 2021 15:33:39 +0000 X-CR-MTA-TID: 64aa7808 Received: from e826f547f63b.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2BEA24EF-7889-49E5-BE31-EF92B5BE734B.1; Fri, 18 Jun 2021 15:33:33 +0000 Received: from EUR02-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e826f547f63b.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 18 Jun 2021 15:33:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lAsevt/KPHrdfIwFsR/SKjVv8i/YLxoWGL+tf7wvtQ6VdUtiidnlU5mGf/BgQKOWzpeRzacOlSGaq1/cBt+SQ4ECNHHWPOTR8VPRBBWOgTn2OdSVd+Z1Rucvr9R5CjWq6+kedSDUjG2A58u0vesjyKFhbkU1gGi92imGzSJ2RW5Pmvo0j2rZfeT/4sKZ3U9/kLcSpMbX6uHmoX0eG77++ZJZgvGX6GA9TAkKs4G9MgSDRuPykuE3UOWdpUk/8MaaqcoOeYBaJ+0VRXsL7cEsMSVDZ/Wzz1gUjFcBl2kpfDtAL6ohKkGJP0FcQwzrtUVAKLfgeSU8JvOo50gTc2nkPg== 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-SenderADCheck; bh=98Qncdorv2TAR3sZ+odcbxHrqt2vnoxnTXeXEZal/rc=; b=Ir6J8/EGnxNAT8LBJT+LV/RgW/pkqStcCbFiMgtYb/QXDbsaOOsOK6GhcwNzi9PN+Vh9mHAQtKIaHYLC3KSbZK2VpCeDpnSKswx5aVRML9XmNjVDR5q6PYqiyHhDq2xT1kNCG3e57BKdlu0/0mksKWTsnpZHy2eh/haF//ymKMxeQPpXX71JItHJEqxDSV5EiylcIphf3y3/nPij9eP8VCt7jwczCS76pUm7zK0HemvsJMQpBrQ0ldtDl7YM+t2gEcpUazfrc6mgMexScnZ7D7umnYMgqffhr+K7TPybCEUWpHtdA8q7+E9bitXsGCgaaIFLlA9mWT10vbftuxagAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by PA4PR08MB5997.eurprd08.prod.outlook.com (2603:10a6:102:f0::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.19; Fri, 18 Jun 2021 15:33:30 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::842d:9c78:f6df:c267]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::842d:9c78:f6df:c267%5]) with mapi id 15.20.4242.021; Fri, 18 Jun 2021 15:33:30 +0000 From: Kyrylo Tkachov To: Srinath Parvathaneni , "gcc-patches@gcc.gnu.org" CC: Richard Earnshaw Subject: RE: [PATCH][GCC-10] arm: Fix multilib mapping for CDE extensions [PR100856]. Thread-Topic: [PATCH][GCC-10] arm: Fix multilib mapping for CDE extensions [PR100856]. Thread-Index: AQHXZFYLrJGSJF2oaEqhSKfZcCdVjKsZ5dvA Date: Fri, 18 Jun 2021 15:33:30 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 4CD3F8ECB9C8344FBFBD09703F3B0DAC.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [86.31.103.53] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: ff90a01d-fb75-4e89-33b7-08d9326e72ce x-ms-traffictypediagnostic: PA4PR08MB5997:|PA4PR08MB6109: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: fPlpzh3TCkH8JghSqojdDqjwG33O6URzQgEyNYa0DaTPPywgFbnf1pmelJVbUj9MJYLwKl1GQwa4Igmw23SsgFxq6UEzmkYs7vG0YJxHt6Mnh/7rwsTBXboTEaN8DzuANsk+I9VvLJKgMkknbP8GhHZE3tdUKCHSzsj7IIDte2A3KT7xJLzaGMC+4ajTOIOHD2MTYjj1D6gfA5egzP5fL3onsR+a0y+dftSfyIaGHPo52CzlRgtyzC6+xbTsfCBPhJN+ANl8lsw3BvqCtWHqCYtYB8xStrhHGEFZ0ACcp1mqSRGZAml1y8w7AmsJzRGGeU9PnrOiDZl96GQBH6qWhM7CtRsfB3RmA1gIhYFiLUBPKxRDDulXdv32uVO90pF1DWI5KY+RvMLTt02JcyQNp/VcDtU1TXI98AYCQrOwPR6jzvz36SyVMfd1ASWTXljH1YiyY5P6miRYe/7IQyVvL3wpBSJXkxBXmU/wUOxRwT+UG/AgmEvae6i7sx911DDEou1ShEtB3uAUhWfJIjm+VF+0YhfPaRMOpPDdUE8qKIY9WP1f06cgjYTEyotoytnm5x9+/G+BbRwzGaGBm4x13ch+YR8SHDlRKv+/fjuGMQs= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB6926.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39840400004)(346002)(396003)(136003)(366004)(376002)(83380400001)(8936002)(26005)(4326008)(76116006)(186003)(71200400001)(55016002)(7696005)(38100700002)(122000001)(8676002)(5660300002)(53546011)(2906002)(30864003)(55236004)(110136005)(52536014)(86362001)(33656002)(478600001)(9686003)(66946007)(66476007)(66446008)(66556008)(64756008)(316002)(6506007)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?MTnRBSw6LA/DR1M8tscnkSWIzMPXpNy2znyKoyeppJn9THSU+L3bFXInjG0T?= =?us-ascii?Q?fK/QIVuMRB+fFW01d6H5fS0yS2JbWCfQiTj+zsnqItGNON3aj6pJVe4mzuZ8?= =?us-ascii?Q?vVJsVC02Q39ZxnE2YIajrWOhyOxl/2Y54LjSIRj2WzgxuQHS7P3FZOtTaX5q?= =?us-ascii?Q?S2qN9MAfgjE1S6WZuBA1t2SphcguPL3g6Xr13F9w+Yix9YLWJh53DDkMaBt2?= =?us-ascii?Q?vC/KF3s79fBe19EaKnN+ALAxv1+KFlSotGe94qR0TNfFPTvoaQ7xMtoM9mEz?= =?us-ascii?Q?//HEpSh4t6j9G6EQFZT8hJyso197n7Z7wS9rWKXkifsV+9/njObBWM28mfes?= =?us-ascii?Q?lxg4v6v/z2B4CTi9Vj2dm+Qkba+wSinIfhSXqSo4zoaVa29SEGwBbiSFXjap?= =?us-ascii?Q?kmr6oXIn8+LpLlNABudL4QWTlKA4xNcyzSqOgJqN83lm6zAUqsuRNt+vG/98?= =?us-ascii?Q?BNOytoTQOGT3cg7SsU9kmlp0FrJuK6MR14hw285nSSpp66vMOGT0mDoUsV0l?= =?us-ascii?Q?e3R64xyduTbrX6tei3gCwfm0yxwuV6lx0SXInPzv2ngrpStS1vE7KLsRe1mL?= =?us-ascii?Q?4Xs7IYKiZeENjA5SWnq/+oAMOfAtTaB3OmgWGUhkrGqHvV0mqV34dIh8HmA2?= =?us-ascii?Q?0k2HxP729Nxe+KqcaV8CxTMTA3r6a+BYlAmpXeY9lA9aeKjnx+ZgY2t4Ybi0?= =?us-ascii?Q?5Tje9g9x6mecogF984wjuUhAWlktIRpa8cahAUT1gv98HgtxZychmb/Tci6t?= =?us-ascii?Q?SeOP97VyRC/pMXWtPVwVledzXwNPAf2b2C0geJVE+1+hB8I4EF2O/iUjVZBe?= =?us-ascii?Q?835cYHBldijCvYC7kMKP147xMkt9ojCbfoAZMu/GFuzcCwghh/6krmI+hFrM?= =?us-ascii?Q?Psi+DaUbWDvyZDV2GnCGmGT1IZIjNhQ/CPMmg39mKJF6kud1NNF88YJWBfYd?= =?us-ascii?Q?h1ziOTpd4TPa4TbY6Jvc0gNccI0I8QfqKaUNUPuuzLQJiGaO0oTK4fPDHqAZ?= =?us-ascii?Q?3Miohz5w1yMmuL2okWBJhsZpr2JeduhQ4N+6V6Vk7O7qiArqAsG05NJZpaLL?= =?us-ascii?Q?bhskgPP8gHVNrDgWuR/oYoJqYFJz0C5VjJbjC2SHz15kBE6mCQfyW01Rcamf?= =?us-ascii?Q?eS6RW2BTrWq5u0r8AxnaLtrFhX4+q/zLTi7v4KcT8LDUh4MuhgHQGTL/vRdi?= =?us-ascii?Q?GiZlX29fAtq6jH4/7rw6Nahscq/oHZ9npzgY2URecMc4T/WLJQE8PLP4OZnW?= =?us-ascii?Q?dGhozc+cNVWG0XqEt6jAaMsoEWfJ/GxxBs/gXqIPJIBRduCmU0PJjAJpgIjM?= =?us-ascii?Q?3sFwLKYlTcsbtiY+b9fT4gtS?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB5997 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT056.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 77c0afdb-9010-4d72-9bcd-08d9326e6d0d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 696aM0Q0ka29OcSjb6MhW5HoASf6ocL53P0C6UkLGu+2GyQRAkAQ0KkoTSYw7KpTe2+lrcPmT+ZQ21kCrof5XeKqEm4oQiXdDKLdWNk/b+PXobqzOL9XEd8j3JrBZ25xrBwBbTF9eL2vrd2a9NRvgLbT/hfl7iBY1wCq3rJrqUl0sv6dCqMjuz1Wut2kzfL0M5KJMSl5eFIPTZMHT9a1cz1hSbSg3tB1piBMhU4ms5eD5eRKnNHwHhHlIHCOEwR+ZdvRDiNouA2R8wQ+6XN8VUEl6oP5N2IsbjT9Wp100rULPQICJSH9TIrJTL+OAoTAZQprqS7dhWu9l5WeMTD2qaxtjerrowaP2coMP+3+JkTnHv4awHLNIHu89Cr42JHZd9yrT7rhL8FPyeTCux8dcwVAIKvAj0zavQ0ZJFR5JDuUTmLd4TLsuuoqRE0jTSbPWNmP7EzMF9+mN7atWg1z9DATj2jN3/3wdcYwFVpgtPgaQ2Mv6HyWA2jXOcrtMHUQeayDWayY28Rm2BBW9Bqz9P+zSY0lX8/LPb0ny6lpoiWoj1DejWvn0b+lsSVxi8urHJlZ5gtSOW0uiIkcK+ZQ/tDAkHNVBxkRqWWC5hxp6tFH2Bi+4LktkSNwdGdp7FEjEYADECz/qyQRNGlu9+hgR2jr6IKnu/F0cP5G3XhF4b8= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(376002)(39840400004)(346002)(396003)(136003)(36840700001)(46966006)(86362001)(81166007)(356005)(30864003)(83380400001)(110136005)(7696005)(9686003)(8676002)(478600001)(4326008)(53546011)(186003)(2906002)(55016002)(5660300002)(6506007)(55236004)(336012)(70586007)(8936002)(26005)(47076005)(316002)(33656002)(52536014)(82310400003)(36860700001)(70206006); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2021 15:33:40.1994 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ff90a01d-fb75-4e89-33b7-08d9326e72ce X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT056.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6109 X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Fri, 18 Jun 2021 15:33:46 -0000 > -----Original Message----- > From: Srinath Parvathaneni > Sent: 18 June 2021 16:22 > To: gcc-patches@gcc.gnu.org > Cc: Kyrylo Tkachov ; Richard Earnshaw > > Subject: [PATCH][GCC-10] arm: Fix multilib mapping for CDE extensions > [PR100856]. >=20 > Hi, >=20 > This is a backport to gcc-10 and the patch applied cleanly on the branch. >=20 > On passing +cdecp[0-7] extension to the -march string in command line > options, > multilib linking is failing as mentioned in PR100856. This patch fixes th= is issue > by > generating a separate canonical string by removing compiler options which > are not > required for multilib linking from march string and assign the new string= to > mlibarch > option. This mlibarch string is used for multilib comparison. >=20 > Ok for gcc-10 branch? Ok. Thanks, Kyrill >=20 > Regards, > Srinath. >=20 > gcc/ChangeLog: >=20 > 2021-06-10 Srinath Parvathaneni >=20 > PR target/100856 > * common/config/arm/arm-common.c (arm_canon_arch_option_1): > New function > derived from arm_canon_arch. > (arm_canon_arch_option): Call it. > (arm_canon_arch_multilib_option): New function. > * config/arm/arm-cpus.in (IGNORE_FOR_MULTILIB): New fgroup. > * config/arm/arm.h (arm_canon_arch_multilib_option): New > prototype. > (CANON_ARCH_MULTILIB_SPEC_FUNCTION): New macro. > (MULTILIB_ARCH_CANONICAL_SPECS): New macro. > (DRIVER_SELF_SPECS): Add MULTILIB_ARCH_CANONICAL_SPECS. > * config/arm/arm.opt (mlibarch): New option. > * config/arm/t-rmprofile (MULTILIB_MATCHES): For armv8*-m, > replace use > of march on RHS with mlibarch. >=20 > gcc/testsuite/ChangeLog: >=20 > 2021-06-10 Srinath Parvathaneni >=20 > PR target/100856 > * gcc.target/arm/acle/pr100856.c: New test. > * gcc.target/arm/multilib.exp: Add tests for cde options. >=20 > (cherry picked from commit f58d03b5df25f9eab06b7eacea8da780fc2e0219) >=20 >=20 > ############### Attachment also inlined for ease of reply > ############### >=20 >=20 > diff --git a/gcc/common/config/arm/arm-common.c > b/gcc/common/config/arm/arm-common.c > index > 78a779c935071c534a780821d399cb7d2e170808..a4b3e86ad5251be18f7131 > cd05fdab40f11d3742 100644 > --- a/gcc/common/config/arm/arm-common.c > +++ b/gcc/common/config/arm/arm-common.c > @@ -590,9 +590,15 @@ public: > The options array consists of couplets of information where the > first item in each couplet is the string describing which option > name was selected (arch, cpu, fpu) and the second is the value > - passed for that option. */ > -const char * > -arm_canon_arch_option (int argc, const char **argv) > + passed for that option. > + > + arch_for_multilib is boolean variable taking value true or false. > + arch_for_multilib is false when the canonical representation is for -= march > + option and it is true when canonical representation is for -mlibarch = option. > + On passing arch_for_multilib true the canonical string generated will= be > + without the compiler options which are not required for multilib link= ing. > */ > +static const char * > +arm_canon_arch_option_1 (int argc, const char **argv, bool > arch_for_multilib) > { > const char *arch =3D NULL; > const char *cpu =3D NULL; > @@ -657,8 +663,8 @@ arm_canon_arch_option (int argc, const char **argv) > /* First build up a bitmap describing the target architecture. */ > if (arch) > { > - selected_arch =3D arm_parse_arch_option_name (all_architectures, > - "-march", arch); > + selected_arch =3D arm_parse_arch_option_name (all_architectures, "= - > march", > + arch, !arch_for_multilib); >=20 > if (selected_arch =3D=3D NULL) > return ""; > @@ -666,6 +672,15 @@ arm_canon_arch_option (int argc, const char > **argv) > arm_initialize_isa (target_isa, selected_arch->common.isa_bits); > arm_parse_option_features (target_isa, &selected_arch->common, > strchr (arch, '+')); > + if (arch_for_multilib) > + { > + const enum isa_feature removable_bits[] =3D > {ISA_IGNORE_FOR_MULTILIB, > + isa_nobit}; > + sbitmap isa_bits =3D sbitmap_alloc (isa_num_bits); > + arm_initialize_isa (isa_bits, removable_bits); > + bitmap_and_compl (target_isa, target_isa, isa_bits); > + } > + > if (fpu && strcmp (fpu, "auto") !=3D 0) > { > /* We assume that architectures do not have any FPU bits > @@ -682,7 +697,8 @@ arm_canon_arch_option (int argc, const char **argv) > else if (cpu) > { > const cpu_option *selected_cpu > - =3D arm_parse_cpu_option_name (all_cores, "-mcpu", cpu); > + =3D arm_parse_cpu_option_name (all_cores, "-mcpu", cpu, > + !arch_for_multilib); >=20 > if (selected_cpu =3D=3D NULL) > return ""; > @@ -1032,3 +1048,22 @@ arm_asm_auto_mfpu (int argc, const char > **argv) > #define TARGET_EXCEPT_UNWIND_INFO arm_except_unwind_info >=20 > struct gcc_targetm_common targetm_common =3D > TARGETM_COMMON_INITIALIZER; > + > +/* Returns a canonical representation of the -march option from the > current > + -march string (if given) and other options on the command line that m= ight > + affect the architecture. */ > +const char * > +arm_canon_arch_option (int argc, const char **argv) > +{ > + return arm_canon_arch_option_1 (argc, argv, false); > +} > + > +/* Returns a canonical representation of the -mlibarch option from the > current > + -march string (if given) and other options on the command line that m= ight > + affect the architecture after removing the compiler extension options > which > + are not required for multilib linking. */ > +const char * > +arm_canon_arch_multilib_option (int argc, const char **argv) > +{ > + return arm_canon_arch_option_1 (argc, argv, true); > +} > diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in > index > db0b93f6bb74f6ddf42636caa0d9a3db38692982..5abcad4c35d07576c1e2c83 > 092e0aac215280339 100644 > --- a/gcc/config/arm/arm-cpus.in > +++ b/gcc/config/arm/arm-cpus.in > @@ -324,6 +324,8 @@ define implied vfp_base MVE MVE_FP ALL_FP > # need to ignore it for matching purposes. > define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz > quirk_cm3_ldrd xscale quirk_no_asmcpu >=20 > +define fgroup IGNORE_FOR_MULTILIB cdecp0 cdecp1 cdecp2 cdecp3 > cdecp4 cdecp5 cdecp6 cdecp7 > + > # Architecture entries > # format: > # begin arch > diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h > index > 30e1d6dc994e18012fd2e5a1bbd7c69134ee100c..2922dfe677c88cb2b3c445 > ddfe012f2f40016f3e 100644 > --- a/gcc/config/arm/arm.h > +++ b/gcc/config/arm/arm.h > @@ -2357,10 +2357,14 @@ extern const char *host_detect_local_cpu (int > argc, const char **argv); > #endif >=20 > const char *arm_canon_arch_option (int argc, const char **argv); > +const char *arm_canon_arch_multilib_option (int argc, const char **argv)= ; >=20 > #define CANON_ARCH_SPEC_FUNCTION \ > { "canon_arch", arm_canon_arch_option }, >=20 > +#define CANON_ARCH_MULTILIB_SPEC_FUNCTION \ > + { "canon_arch_multilib", arm_canon_arch_multilib_option }, > + > const char *arm_be8_option (int argc, const char **argv); > #define BE8_SPEC_FUNCTION \ > { "be8_linkopt", arm_be8_option }, > @@ -2369,6 +2373,7 @@ const char *arm_be8_option (int argc, const char > **argv); > MCPU_MTUNE_NATIVE_FUNCTIONS \ > ASM_CPU_SPEC_FUNCTIONS \ > CANON_ARCH_SPEC_FUNCTION \ > + CANON_ARCH_MULTILIB_SPEC_FUNCTION \ > TARGET_MODE_SPEC_FUNCTIONS \ > BE8_SPEC_FUNCTION >=20 > @@ -2389,12 +2394,22 @@ const char *arm_be8_option (int argc, const > char **argv); > " %{mfloat-abi=3D*: abi %*}" \ > " %=20 > +/* Generate a canonical string to represent the architecture selected > ignoring > + the options not required for multilib linking. */ > +#define MULTILIB_ARCH_CANONICAL_SPECS \ > + "-mlibarch=3D%:canon_arch_multilib(%{mcpu=3D*: cpu %*} " \ > + " %{march=3D*: arch %*} " \ > + " %{mfpu=3D*: fpu %*} " \ > + " %{mfloat-abi=3D*: abi %*}" \ > + " % + > /* Complete set of specs for the driver. Commas separate the > individual rules so that any option suppression (% completed before starting subsequent rules. */ > #define DRIVER_SELF_SPECS \ > MCPU_MTUNE_NATIVE_SPECS, \ > TARGET_MODE_SPECS, \ > + MULTILIB_ARCH_CANONICAL_SPECS, \ > ARCH_CANONICAL_SPECS >=20 > #define TARGET_SUPPORTS_WIDE_INT 1 > diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt > index > cd3d8e1beac8e7ef122162cf2de49a799ccd1442..43c2c74545729fa206d70c0 > 3a0849bf6cd7bc484 100644 > --- a/gcc/config/arm/arm.opt > +++ b/gcc/config/arm/arm.opt > @@ -90,6 +90,12 @@ Specify the name of the target architecture. > EnumValue > Enum(arm_arch) String(native) Value(-1) DriverOnly >=20 > +; Set to the name of target architecture which is required for > +; multilib linking. This option is undocumented becuase it > +; should not be used by the users. > +mlibarch=3D > +Target RejectNegative JoinedOrMissing NoDWARFRecord DriverOnly > Undocumented > + > marm > Target Report RejectNegative Negative(mthumb) InverseMask(THUMB) > Generate code in 32 bit ARM state. > diff --git a/gcc/config/arm/t-rmprofile b/gcc/config/arm/t-rmprofile > index > 16e368f25cc2e3ad341adc2752120ad0defdf2a4..9f4d70b718aa64fc003b32b > deaabf890853223a4 100644 > --- a/gcc/config/arm/t-rmprofile > +++ b/gcc/config/arm/t-rmprofile > @@ -53,10 +53,15 @@ MULTILIB_REQUIRED +=3D mthumb/march=3Darmv8.1- > m.main+mve/mfloat-abi=3Dhard > # Arch Matches > MULTILIB_MATCHES +=3D march?armv6s-m=3Dmarch?armv6-m >=20 > +# For all MULITIB_MATCHES for v8-m and above add mlibarch? on the right > hand side > +# of =3D in the variant string instead of march?. This is needed becuas= e all the > +# MULITIB_MATCHES variant strings are compared with mlibarch option for > multilib > +# linking. > + > # Map all v8-m.main+dsp FP variants down to the variant without DSP. > -MULTILIB_MATCHES +=3D march?armv8-m.main=3Dmarch?armv8-m.main+dsp > \ > +MULTILIB_MATCHES +=3D march?armv8-m.main=3Dmlibarch?armv8- > m.main+dsp \ > $(foreach FP, +fp +fp.dp, \ > - march?armv8-m.main$(FP)=3Dmarch?armv8- > m.main+dsp$(FP)) > + march?armv8-m.main$(FP)=3Dmlibarch?armv8- > m.main+dsp$(FP)) >=20 > # For single-precision only fpv5, use the base fp libraries > MULTILIB_MATCHES +=3D march?armv7e-m+fp=3Dmarch?armv7e-m+fpv5 > @@ -65,10 +70,9 @@ MULTILIB_MATCHES +=3D march?armv7e- > m+fp=3Dmarch?armv7e-m+fpv5 > MULTILIB_REUSE +=3D $(foreach ARCH, armv6s-m armv7-m > armv7e-m armv8-m\.base armv8-m\.main, \ > mthumb/march.$(ARCH)/mfloat- > abi.soft=3Dmthumb/march.$(ARCH)/mfloat-abi.softfp) >=20 > - > # Map v8.1-M to v8-M. > -MULTILIB_MATCHES +=3D march?armv8-m.main=3Dmarch?armv8.1-m.main > -MULTILIB_MATCHES +=3D march?armv8-m.main=3Dmarch?armv8.1- > m.main+dsp > +MULTILIB_MATCHES +=3D march?armv8-m.main=3Dmlibarch?armv8.1-m.main > +MULTILIB_MATCHES +=3D march?armv8-m.main=3Dmlibarch?armv8.1- > m.main+dsp > MULTILIB_REUSE +=3D mthumb/march.armv8-m\.main/mfloat- > abi.soft=3Dmthumb/march.armv8\.1-m\.main+mve/mfloat-abi.soft > MULTILIB_REUSE +=3D mthumb/march.armv8-m\.main/mfloat- > abi.soft=3Dmthumb/march.armv8\.1-m\.main+mve/mfloat-abi.softfp >=20 > @@ -77,8 +81,15 @@ v8_1m_dp_variants =3D +fp.dp +dsp+fp.dp +fp.dp+mve > +fp.dp+mve.fp >=20 > # Map all v8.1-m.main FP sp variants down to v8-m. > MULTILIB_MATCHES +=3D $(foreach FP, $(v8_1m_sp_variants), \ > - march?armv8-m.main+fp=3Dmarch?armv8.1- > m.main$(FP)) > + march?armv8-m.main+fp=3Dmlibarch?armv8.1- > m.main$(FP)) >=20 > # Map all v8.1-m.main FP dp variants down to v8-m. > MULTILIB_MATCHES +=3D $(foreach FP, $(v8_1m_dp_variants), \ > - march?armv8-m.main+fp.dp=3Dmarch?armv8.1- > m.main$(FP)) > + march?armv8-m.main+fp.dp=3Dmlibarch?armv8.1- > m.main$(FP)) > + > +# For all the MULTILIB_REQUIRED for v8-m and above, add > MULTILIB_MATCHES which > +# maps mlibarch with march for multilib linking. > +MULTILIB_MATCHES +=3D march?armv8-m.main=3Dmlibarch?armv8-m.main > +MULTILIB_MATCHES +=3D march?armv8-m.main+fp=3Dmlibarch?armv8- > m.main+fp > +MULTILIB_MATCHES +=3D march?armv8-m.main+fp.dp=3Dmlibarch?armv8- > m.main+fp.dp > +MULTILIB_MATCHES +=3D march?armv8.1-m.main+mve=3Dmlibarch?armv8.1- > m.main+mve > diff --git a/gcc/testsuite/gcc.target/arm/acle/pr100856.c > b/gcc/testsuite/gcc.target/arm/acle/pr100856.c > new file mode 100644 > index > 0000000000000000000000000000000000000000..5bc030e2e46bf89dfe7f3b > 9d0dab1e07947e8d5e > --- /dev/null > +++ b/gcc/testsuite/gcc.target/arm/acle/pr100856.c > @@ -0,0 +1,10 @@ > +/* { dg-do run } */ > +/* { dg-require-effective-target arm_v8_1m_main_cde_mve_ok } */ > +/* { dg-add-options arm_v8_1m_main_cde_mve } */ > + > +#include "arm_cde.h" > + > +int main() > +{ > + return 0; > +} > diff --git a/gcc/testsuite/gcc.target/arm/multilib.exp > b/gcc/testsuite/gcc.target/arm/multilib.exp > index > 6aba29ede95263b1c9a7eff438f94f53559f8a2a..8235546483913ca4c482383 > d8c9bac86a193c4df 100644 > --- a/gcc/testsuite/gcc.target/arm/multilib.exp > +++ b/gcc/testsuite/gcc.target/arm/multilib.exp > @@ -840,6 +840,119 @@ if {[multilib_config "rmprofile"] } { > {-mcpu=3Dcortex-m55+nomve+nofp -mfpu=3Dauto -mfloat-abi=3Dsoftfp} > "thumb/v8-m.main/nofp" > {-mcpu=3Dcortex-m55+nodsp+nofp -mfpu=3Dauto -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > {-mcpu=3Dcortex-m55+nodsp+nofp -mfpu=3Dauto -mfloat-abi=3Dsoftfp} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dvfpv3xd -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dvfpv3xd -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dvfpv3xd-fp16 - > mfloat-abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dvfpv3xd-fp16 - > mfloat-abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv4-sp-d16 - > mfloat-abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv5-sp-d16 - > mfloat-abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv5-d16 -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dhard} > "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dhard} > "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dvfpv3xd -mfloat-abi=3Dhard} > "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dvfpv3xd -mfloat-abi=3Dhard} > "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dvfpv3xd-fp16 - > mfloat-abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dvfpv3xd-fp16 - > mfloat-abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv4-sp-d16 - > mfloat-abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv5-sp-d16 - > mfloat-abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv5-d16 -mfloat-abi=3Dhard} > "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoftfp} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoftfp} > "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dvfpv3xd -mfloat-abi=3Dsoftfp} > "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dvfpv3xd -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dvfpv3xd-fp16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dvfpv3xd-fp16 - > mfloat-abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dvfpv3xd-fp16 - > mfloat-abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv4-sp-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv4-sp-d16 - > mfloat-abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv5-sp-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv5-sp-d16 - > mfloat-abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+cdecp0 -mfpu=3Dfpv5-d16 -mfloat-abi=3Dsoftfp} > "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp.dp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp+dsp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8-m.main+fp.dp+dsp+cdecp0 -mfpu=3Dfpv5-d16 -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8.1-m.main+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+dsp+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+dsp+fp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoftfp} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+dsp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+dsp+fp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8.1-m.main+dsp+fp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8.1-m.main+mve+cdecp0 -mfpu=3Dauto -mfloat-abi=3Dsoft} > "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+mve.fp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+mve+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+mve.fp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8.1-m.main+mve+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dhard} "thumb/v8.1-m.main+mve/hard" > + {-march=3Darmv8.1-m.main+mve+fp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8.1-m.main+mve+fp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+fp/softfp" > + {-march=3Darmv8.1-m.main+mve.fp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dhard} "thumb/v8-m.main+fp/hard" > + {-march=3Darmv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=3Dauto - > mfloat-abi=3Dsoft} "thumb/v8-m.main/nofp" > + {-march=3Darmv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=3Dauto - > mfloat-abi=3Dsoftfp} "thumb/v8-m.main+dp/softfp" > + {-march=3Darmv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=3Dauto -mfloat- > abi=3Dhard} "thumb/v8-m.main+dp/hard" > + {-march=3Darmv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=3Dauto - > mfloat-abi=3Dhard} "thumb/v8-m.main+dp/hard" > } { > check_multi_dir $opts $dir > }