From patchwork Tue Jan 16 10:42:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Carlotti X-Patchwork-Id: 84169 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 90D3C3857C64 for ; Tue, 16 Jan 2024 10:44:07 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2083.outbound.protection.outlook.com [40.107.22.83]) by sourceware.org (Postfix) with ESMTPS id 7E7913857C72 for ; Tue, 16 Jan 2024 10:43:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7E7913857C72 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7E7913857C72 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.22.83 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1705401785; cv=pass; b=a71RVIU5vz2DFemPtE4H5j9S6kGHKF/9ULGw40L39gL9oMw4hcYNj7Ni2x54YneOdta0eN+pcF713FRTCeO6FQYAX8DfAY1Q18/nrXLY52OXqIG6yNLBz+wUhjltLd0LEQvQzmcQwILwvITnnHtHvZAUFlyIdSOCJkeAMuAlIaI= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1705401785; c=relaxed/simple; bh=hC4Phid84xilSqy8iKAdNcXRF7GqwQ2somubPl3R1s0=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=LEe4qIBTGUEOJBhoTsioexw3LmNThGQuPVlimOlQwNhcyEy6btJywrkAGvBecnYOFPdT+I2Ww4/RxIlYbk81wkEtKMafTXyKf8LqrNR/fCTib30NAVq4sP4AuyKfXGTNVYWIQ6vkTr23jmu5QSWjEg1zJozwDVpgh4nQntYTx40= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Rgp75xbsaSv1aLaDnqyIagrZqSyVyat+GY6fpTawOnrq/uxDNDRkcTHnWNt1F/wZCnx6+wxUy+WnHu/76dj8pwEvQ7MQwJf51s6rC+nW1323cny6LbhqWwoC5AWYPOSzG6Cj7g7Fks6IkfuOvxLSUBx3l2txb8YbApcPJZa6I54zkhoofm9k6MscG/4rAVy6tHFNVKPEuq/gdfioCCrg0rUWPCNToxAVcGpJawzdd8T+C0d0RRdEmu/PN36db9dwgb3OFSRHpX+molWayYjy20mmBtgCE1qf8Q2mQuIHfPiNBIlf6ThXU3F+XJ2SGRZE3bhU9k5ZVBPq1yGgC1bXcw== ARC-Message-Signature: i=2; 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=pbGA9SNVDN6hBF553+/bxOSDEbgnQ+hwRxu4tpvtR8Q=; b=eN5Ga/7KHz5zSbGFgIa2zDFlYcBeOIR3KQXNlRsxpUgmPngw4a0GaQg9fsnd8MflqN27auorJcVe+Z11ICKYUUNpneLiyqnS0z6GGYaQXWM5bnwjbcFoFqzydWVCdk38FC0Z46aTQ8KUcbVfxFsqTeGwHtABuHYDgrcwn+HbNb+8Fbx+Y9QKm2AuPWDbCiQYmZ5v25tXNw9QAxY32CPw4basWiQiUYd7VcoaAY66WF0Bu+MMKorSedi9gtgV2ptD4G6R2J14/fX/Q5OXGJdZSTZ+5MBqnY5toZlhN1of890kiIGFrvNgI86A/5QF+Dft6gu+baFlrwwUgC+Eu2f/hg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pbGA9SNVDN6hBF553+/bxOSDEbgnQ+hwRxu4tpvtR8Q=; b=AUX74vBBHYWol619Q5+Qrj6kGSgNFWZAhezFwwEncbdCcDXu8XUazOdfXjNdwx/yqm12Tq7e7zq+nwj2VUv9tOGxafXZWMhqpfx5mP5Qr9ZvH0Htxlt6ByehkuM+PfuNLPtwjx6tppKK/hhWFokcARYbJzP/zOMpxGYRkBdG9Lg= Received: from AM0PR01CA0143.eurprd01.prod.exchangelabs.com (2603:10a6:208:168::48) by DBBPR08MB10590.eurprd08.prod.outlook.com (2603:10a6:10:52c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Tue, 16 Jan 2024 10:42:58 +0000 Received: from AM4PEPF00027A60.eurprd04.prod.outlook.com (2603:10a6:208:168:cafe::58) by AM0PR01CA0143.outlook.office365.com (2603:10a6:208:168::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.29 via Frontend Transport; Tue, 16 Jan 2024 10:42:58 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM4PEPF00027A60.mail.protection.outlook.com (10.167.16.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.16 via Frontend Transport; Tue, 16 Jan 2024 10:42:57 +0000 Received: ("Tessian outbound 31df1b57f90c:v228"); Tue, 16 Jan 2024 10:42:57 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 014a09ea97479cd8 X-CR-MTA-TID: 64aa7808 Received: from e86180687695.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4F0F28D4-816A-4677-A50D-93281818AA13.1; Tue, 16 Jan 2024 10:42:45 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e86180687695.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 16 Jan 2024 10:42:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BPqQrZnAtwQQgvt+xU9DbcIYkel+UKfJQQETXrxv5xfkU8M+6p3USLccUeviyEONvNEo8iSH9V90Fs/5hdHhPISBaEHhMR9iA8GlPusIyGwUIDUm1ny5Zvl0bKmRL4U8ASqn3VPEr8fBXyPy3gFXcQbfc4yTyTiWh4y6iKqMeBNBo4UBRi7X3oTOABeVcvlCB/GCNtd/p8jRmqtChWlh1uj6DSr8FBNZxYtm5KtjR8SeaVbHyMnasxzFzkhQUG0Ov7MnWvkgo2nG4giHQ8oN213PGAgBvIiRcWeWgH2qoPgvvRH4nkZa1vlGQUolilUt57NRrAfaWLxaY8DWuMISFw== 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=pbGA9SNVDN6hBF553+/bxOSDEbgnQ+hwRxu4tpvtR8Q=; b=HAumRY6wmmQ4XsR0qyBYn3A3j5ZJCUXm0hzlyhNAis9O2YFKQeShdfuyotrgKmkmCxXFBIrI2DCnVI221lNOEXvjfwBdDUNY0ptQxq43Uyfx+5/X9gEd+wcTjAQMluIFhlvGwUesPT/qGnenCeH/2lEB+l3b9qOwHuEGTqCBSR5JkrtzGCmGG3YaL4j/wDm2SPMBAuqnCrKm+V4h/hYlHdFAydRLcBfdNUp0LfAiqZhQQQC5dvdyMdPGWKV/Gp1B6WZaUulNdZJOxWHmSuwRqACwVP/BQVOqxwtk+ocHHrFbXWqTZrwtACPGHSijVyAGFJsxzZstNzJsiqvKt/KKpQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pbGA9SNVDN6hBF553+/bxOSDEbgnQ+hwRxu4tpvtR8Q=; b=AUX74vBBHYWol619Q5+Qrj6kGSgNFWZAhezFwwEncbdCcDXu8XUazOdfXjNdwx/yqm12Tq7e7zq+nwj2VUv9tOGxafXZWMhqpfx5mP5Qr9ZvH0Htxlt6ByehkuM+PfuNLPtwjx6tppKK/hhWFokcARYbJzP/zOMpxGYRkBdG9Lg= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) by PAVPR08MB9082.eurprd08.prod.outlook.com (2603:10a6:102:32f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Tue, 16 Jan 2024 10:42:42 +0000 Received: from AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::a997:a5ad:3e6:44b6]) by AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::a997:a5ad:3e6:44b6%4]) with mapi id 15.20.7181.027; Tue, 16 Jan 2024 10:42:41 +0000 Date: Tue, 16 Jan 2024 10:42:34 +0000 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org Cc: Richard Biener , Richard Sandiford Subject: [PATCH] aarch64: Fix function multiversioning mangling Message-ID: References: <149a20f9-2f84-fb38-9cfb-1de2c38a39d6@e124511.cambridge.arm.com> <0e88d4f6-ce04-2a4a-9e17-918794368798@e124511.cambridge.arm.com> Content-Disposition: inline In-Reply-To: <0e88d4f6-ce04-2a4a-9e17-918794368798@e124511.cambridge.arm.com> X-ClientProxiedBy: SN7PR18CA0012.namprd18.prod.outlook.com (2603:10b6:806:f3::35) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|PAVPR08MB9082:EE_|AM4PEPF00027A60:EE_|DBBPR08MB10590:EE_ X-MS-Office365-Filtering-Correlation-Id: baee6a49-fbfb-4633-f3ca-08dc167fe782 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: faIfdvOEnvaisI354XRmew+4wVOtaDILv2mPZr9pUrB7JDh9u0nk9ZbsSudVo6hMaOYffS2DI9XQTjA5LmdBqArwX/+GGfofaAnoB+DMDNozjP/0hWxRvpfaWAv2PN6/o3Kr6CoLjUITqLC86U1NMv+Vy6JtNbLwUnmOfUm3WpSEhevxTzliqhm3zJMxpSCs992u7xmIEKhxzCq8oJhOsEgwS/uAo9LJL3ceZIjxAXvi0FJbzWZ5atAh/a5q1vGNVxMbqQZTDJSMcopHo1E1oOzo6Wzr34HD3Z1ULgLvXfBCFS/4PF4qb7FIiQbq/MwVs9JojY5CxStfvb3coTNVD/QLPxqHKOq4SW24LT1yzII/aTyTG+oNRNUvc3n9RF4yN0a3Y5qXer7Tr+54Bf4qrmx4RwtAhbVDKu1EV0vdf/hXwdrYco9wbFkv4g3GDXYxhOAIkPXAqS6j3gihDN/Kj3GxakA8QlX7gl+Tz3YPhUgoA6wePvbPJGeJbFkpFOQKyDWkRWN8iQW2A+Lqh/HG7neB/niH9qsKMTyrl9WQTFM7onRnJ8Xq5qh/xFmeLASa X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB6678.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(39860400002)(366004)(376002)(346002)(136003)(230922051799003)(1800799012)(64100799003)(186009)(451199024)(4326008)(5660300002)(26005)(44832011)(8676002)(8936002)(41300700001)(478600001)(30864003)(2906002)(6486002)(38100700002)(6512007)(86362001)(31686004)(6506007)(66476007)(316002)(66946007)(66556008)(6916009)(83380400001)(6666004)(54906003)(31696002); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9082 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00027A60.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: b0fc0f3c-81c3-49ee-b410-08dc167fdd9b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Bff95pOAXmLjmAjG2ToNaeKiQIqjtPiTZ/fck96aITZM0GvejQARPQ9BXr4LDN3puhRiQnXr4/9t/lb3cqkBR6FqY/CKVROhx4akDwEk1gyCHBjuSUH6gAOEMem3WC9oe7VwhRPLoIp5X1Zs2Wwsg0A2m8BZDMPM97ZSoJeixIQdSbYs4L34VKdrEV4rIh3WQj49WUUICLR4otdPH/Ujz8Qui1njX4450bpRHXV9kDrKchPZIiJmmnXeJ2ops0+gqSgSHJJxHmDd+TmwP1sGnFdVAgg+0EMh+9uC7k6dKXzMxDmxJp1WFODc81Jtqqvcse7o8aSDBgRz/TvMoXSH65v7TxDZw/ZkGIWqmFch+rw+SXCZqb76LjSIZHqDtky66F5h2aH2iF8MFS6g/Vr6kmrH8Z3Y6lGMAutZzfPKhB6OY+cjVk11AjURyUS09vf7x2icdkBbFAv3FGErUHapFbmsW2OitLri184dIz/OjaD3nhz70O2f+Hg4OgHi+G4ubLJsgf5IFkYpoYkMgJ8SbjDQiHqdJB/+8alcGWZxZi8ICIll2uzliS174pnjfGBabd0nofH1KBWt980FtDUUT01Dw4/S2acf29wX7FTpCz4NUkyl5C/3Qd/oU+nI5jYdO+x4YS7bDhN9srq9E0HjEBhfSyLCfzL/I7qaSNvIX3rFC8+peW/c2GKnRdovyisHAHxabdhL6hb81eczjB8IOMkSu0rSGttt19NWehh8SuSlsT/T//me9QzB0X/7I2nv 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:(13230031)(4636009)(396003)(346002)(136003)(39860400002)(376002)(230922051799003)(64100799003)(1800799012)(82310400011)(186009)(451199024)(46966006)(40470700004)(36840700001)(40480700001)(31686004)(40460700003)(6512007)(6506007)(82740400003)(81166007)(356005)(31696002)(36860700001)(86362001)(336012)(26005)(47076005)(30864003)(6486002)(6666004)(478600001)(83380400001)(70206006)(44832011)(4326008)(8676002)(8936002)(70586007)(5660300002)(41300700001)(2906002)(316002)(6916009)(54906003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2024 10:42:57.9919 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: baee6a49-fbfb-4633-f3ca-08dc167fe782 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: AM4PEPF00027A60.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10590 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY 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+patchwork=sourceware.org@gcc.gnu.org It would be neater if the middle end for target_clones used a target hook for version name mangling, so we only do version name mangling once. However, that would require more intrusive refactoring that will have to wait till Stage 1. This patch builds upon the testsuite additions in patch 1/5 of the previous series. I could commit just the aarch64 tests for now if that's preferred. Is this version of the fix ok for master? gcc/ChangeLog: * config/aarch64/aarch64.cc (get_suffixed_assembler_name): New. (make_resolver_func): Use get_suffixed_assembler_name. (aarch64_mangle_decl_assembler_name): Add ".default" suffix. (aarch64_generate_version_dispatcher_body): Redo name mangling. gcc/testsuite/ChangeLog: * g++.target/aarch64/mv-symbols1.C: Update for mangling fixes. * g++.target/aarch64/mv-symbols2.C: Ditto. * g++.target/aarch64/mv-symbols3.C: Ditto. * g++.target/aarch64/mv-symbols4.C: Ditto. * g++.target/aarch64/mv-symbols5.C: Ditto. * g++.target/aarch64/mvc-symbols1.C: Ditto. * g++.target/aarch64/mvc-symbols2.C: Ditto. * g++.target/aarch64/mvc-symbols3.C: Ditto. * g++.target/aarch64/mvc-symbols4.C: Ditto. diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 7d1f8c65ce41044d6850262300cf08a23d606617..bf698a2c3bb105375a2be37ca032397161bf4334 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -19832,6 +19832,21 @@ build_ifunc_arg_type () return pointer_type; } +/* Return an identifier for the base assembler name of a versioned function. + This is computed by taking the default version's assembler name, and + stripping off the ".default" suffix if it's already been appended. */ + +tree get_suffixed_assembler_name (tree default_decl, const char *suffix) +{ + std::string name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (default_decl)); + + auto size = name.size (); + if (size >= 8 && name.compare (size - 8, 8, ".default") == 0) + name.resize (size - 8); + name += suffix; + return get_identifier (name.c_str()); +} + /* Make the resolver function decl to dispatch the versions of a multi-versioned function, DEFAULT_DECL. IFUNC_ALIAS_DECL is ifunc alias that will point to the created resolver. Create an @@ -19845,8 +19860,9 @@ make_resolver_func (const tree default_decl, { tree decl, type, t; - /* Create resolver function name based on default_decl. */ - tree decl_name = clone_function_name (default_decl, "resolver"); + /* Create resolver function name based on default_decl. We need to remove an + existing ".default" suffix if this has already been appended. */ + tree decl_name = get_suffixed_assembler_name (default_decl, ".resolver"); const char *resolver_name = IDENTIFIER_POINTER (decl_name); /* The resolver function should have signature @@ -20137,6 +20153,8 @@ dispatch_function_versions (tree dispatch_decl, return 0; } +tree aarch64_mangle_decl_assembler_name (tree, tree); + /* Implement TARGET_GENERATE_VERSION_DISPATCHER_BODY. */ tree @@ -20193,6 +20211,28 @@ aarch64_generate_version_dispatcher_body (void *node_p) dispatch_function_versions (resolver_decl, &fn_ver_vec, &empty_bb); cgraph_edge::rebuild_edges (); pop_cfun (); + + /* Fix up symbol names. First we need to obtain the base name, which may + have already been mangled. */ + tree base_name = get_suffixed_assembler_name (default_ver_decl, ""); + + /* We need to redo the version mangling on the non-default versions for the + target_clones case. Redoing the mangling for the target_version case is + redundant but does no harm. We need to skip the default version, because + expand_clones will append ".default" later; fortunately that suffix is the + one we want anyway. */ + for (versn_info = node_version_info->next->next; versn_info; + versn_info = versn_info->next) + { + tree version_decl = versn_info->this_node->decl; + tree name = aarch64_mangle_decl_assembler_name (version_decl, + base_name); + symtab->change_decl_assembler_name (version_decl, name); + } + + /* We also need to use the base name for the ifunc declaration. */ + symtab->change_decl_assembler_name (node->decl, base_name); + return resolver_decl; } @@ -20317,11 +20357,15 @@ aarch64_mangle_decl_assembler_name (tree decl, tree id) { aarch64_fmv_feature_mask feature_mask = get_feature_mask_for_version (decl); - /* No suffix for the default version. */ + std::string name = IDENTIFIER_POINTER (id); + + /* For the default version, append ".default". */ if (feature_mask == 0ULL) - return id; + { + name += ".default"; + return get_identifier (name.c_str()); + } - std::string name = IDENTIFIER_POINTER (id); name += "._"; for (int i = 0; i < FEAT_MAX; i++) diff --git a/gcc/testsuite/g++.target/aarch64/mv-symbols1.C b/gcc/testsuite/g++.target/aarch64/mv-symbols1.C index afbd9cacfc72e89ff4a06e3baae7ccc63ed64fc0..53e0abcd9b4333590a4c1415ec56cf09fb1ce2bf 100644 --- a/gcc/testsuite/g++.target/aarch64/mv-symbols1.C +++ b/gcc/testsuite/g++.target/aarch64/mv-symbols1.C @@ -49,18 +49,18 @@ int bar(int x) /* When updating any of the symbol names in these tests, make sure to also update any tests for their absence in mv-symbolsN.C */ -/* { dg-final { scan-assembler-times "\n_Z3foov:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\tbl\t_Z7_Z3foovv\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, %gnu_indirect_function\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\tbl\t_Z7_Z3fooii\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, %gnu_indirect_function\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\tbl\t_Z3fooi\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */ diff --git a/gcc/testsuite/g++.target/aarch64/mv-symbols2.C b/gcc/testsuite/g++.target/aarch64/mv-symbols2.C index 54d2396f40705b6a6f7839ded78dcfddd911f7dd..f0c7967a97abb31f3cf9430ae9e8bb807beb8485 100644 --- a/gcc/testsuite/g++.target/aarch64/mv-symbols2.C +++ b/gcc/testsuite/g++.target/aarch64/mv-symbols2.C @@ -37,16 +37,16 @@ int foo (int) return 2; } -/* { dg-final { scan-assembler-times "\n_Z3foov:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, %gnu_indirect_function\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, %gnu_indirect_function\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */ diff --git a/gcc/testsuite/g++.target/aarch64/mv-symbols3.C b/gcc/testsuite/g++.target/aarch64/mv-symbols3.C index 30e78b329851069e061e7ae179bbf78e1a2b4b04..3d30e27deb8b54b838cd8f5f18d5b68e87f4515e 100644 --- a/gcc/testsuite/g++.target/aarch64/mv-symbols3.C +++ b/gcc/testsuite/g++.target/aarch64/mv-symbols3.C @@ -25,17 +25,17 @@ int bar() return foo (); } -/* { dg-final { scan-assembler-times "\n_Z3foov:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\tbl\t_Z7_Z3foovv\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, %gnu_indirect_function\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, %gnu_indirect_function\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */ diff --git a/gcc/testsuite/g++.target/aarch64/mv-symbols4.C b/gcc/testsuite/g++.target/aarch64/mv-symbols4.C index 674f8f88dce6b6b374de1198ed16ebcae9f816ca..73e3279ec314a5e5be3c6f8f1d2b6a520e639d27 100644 --- a/gcc/testsuite/g++.target/aarch64/mv-symbols4.C +++ b/gcc/testsuite/g++.target/aarch64/mv-symbols4.C @@ -32,17 +32,17 @@ int bar() return foo (); } -/* { dg-final { scan-assembler-times "\n_Z3foov:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\tbl\t_Z7_Z3foovv\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, %gnu_indirect_function\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, %gnu_indirect_function\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */ diff --git a/gcc/testsuite/g++.target/aarch64/mv-symbols5.C b/gcc/testsuite/g++.target/aarch64/mv-symbols5.C index 38bc2bdfc21aa9846e574442e1f53dc31a7234aa..05d1379f53ec1b74c29d386c8bd43a81de7ed0e4 100644 --- a/gcc/testsuite/g++.target/aarch64/mv-symbols5.C +++ b/gcc/testsuite/g++.target/aarch64/mv-symbols5.C @@ -40,17 +40,17 @@ int bar() /* When updating any of the symbol names in these tests, make sure to also update any tests for their absence in mvc-symbolsN.C */ -/* { dg-final { scan-assembler-times "\n_Z3foov:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\tbl\t_Z7_Z3foovv\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, %gnu_indirect_function\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, %gnu_indirect_function\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */ diff --git a/gcc/testsuite/g++.target/aarch64/mvc-symbols1.C b/gcc/testsuite/g++.target/aarch64/mvc-symbols1.C index b32e9200e763e8e73316c0d56cf290dadb11b3c8..2dd7c79f16cf7b6ac715c2ad2b35fface2695bed 100644 --- a/gcc/testsuite/g++.target/aarch64/mvc-symbols1.C +++ b/gcc/testsuite/g++.target/aarch64/mvc-symbols1.C @@ -28,16 +28,16 @@ int bar(int x) update any tests for their absence in mvc-symbolsN.C */ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3foov\.dotprod:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3foov\.sve_sve2:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi\.dotprod:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi\.sve_sve2:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3fooi\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 1 } } */ diff --git a/gcc/testsuite/g++.target/aarch64/mvc-symbols2.C b/gcc/testsuite/g++.target/aarch64/mvc-symbols2.C index f57ae25549be709bbf00811f7b78725051a79b9f..75b9c126dd8c337ac983862e3ba736a2c2c9a5ac 100644 --- a/gcc/testsuite/g++.target/aarch64/mvc-symbols2.C +++ b/gcc/testsuite/g++.target/aarch64/mvc-symbols2.C @@ -15,15 +15,15 @@ int foo (int) } /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3foov\.dotprod:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3foov\.sve_sve2:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi\.dotprod:\n" 1 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi\.sve_sve2:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */ diff --git a/gcc/testsuite/g++.target/aarch64/mvc-symbols3.C b/gcc/testsuite/g++.target/aarch64/mvc-symbols3.C index 86340d05b4ad8ab4c3a0c34aacf31e40f7099336..82e777c8fc6ef5fa45aed431641a928b1960303a 100644 --- a/gcc/testsuite/g++.target/aarch64/mvc-symbols3.C +++ b/gcc/testsuite/g++.target/aarch64/mvc-symbols3.C @@ -19,16 +19,16 @@ int bar(int x) } /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3foov\.dotprod:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3foov\.sve_sve2:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi\.dotprod:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi\.sve_sve2:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3fooi\n" 1 } } */ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 1 } } */ diff --git a/gcc/testsuite/g++.target/aarch64/mvc-symbols4.C b/gcc/testsuite/g++.target/aarch64/mvc-symbols4.C index 351545fd201ca80d3d0bb13afdca1d49f211519b..6c86ae61e5fa52d14ed28cebb41d5fd8a7e1552f 100644 --- a/gcc/testsuite/g++.target/aarch64/mvc-symbols4.C +++ b/gcc/testsuite/g++.target/aarch64/mvc-symbols4.C @@ -9,15 +9,15 @@ __attribute__((target_clones("sve+sve2", "dotprod", "default"))) int foo (int); /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3foov\.dotprod:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3foov\.sve_sve2:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 0 } } */ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi\.dotprod:\n" 0 } } */ -/* { dg-final { scan-assembler-times "\n_Z3fooi\.sve_sve2:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */ +/* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 0 } } */ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */