From patchwork Thu Mar 7 17:54:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Faust X-Patchwork-Id: 1909422 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-11-20 header.b=KqzqliIh; dkim=pass (1024-bit key; unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=N6OB3QV8; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TrH4n15c2z1yX4 for ; Fri, 8 Mar 2024 04:54:49 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 18EF43857708 for ; Thu, 7 Mar 2024 17:54:47 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id A30F7385771B for ; Thu, 7 Mar 2024 17:54:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A30F7385771B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A30F7385771B Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709834067; cv=pass; b=lY2pwBl0SzfTODkfdWd8oS3UKNNh3fxIP0tRhvlugUyXV7yYAdAoetFu99oJQiTtZMZIyCxpSzI4zKRhvP50EdownTE1iB6ltjctCawb/urQ4ESSOSl38I6OS5RFYucFaoifPQ19xoEb1oZp042Px9BZkPZ5bFV1AjLIStesleE= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709834067; c=relaxed/simple; bh=J7HYMcLAZ1OWcBLrwyjQl53p+sUquBVMlIPybx0VQCw=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=QBny+aC8ooNJ1N67PEnAuKeuwCW4wmkYnExk5DXfKs34RtHSrnvyI7OtaSnb0msn4WYpDPtv8nQG+Wv2AVmvjJtwklvthdw4WLJ/7gIARmk1JNwDlrk29Gozzn5aYlR+Req7i9Tn0UNJssQfIvFucXzZ82yHyME7jgaBjpROYRQ= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 427HQwdK007332 for ; Thu, 7 Mar 2024 17:54:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=MvDO4qKeZnF4PutNSCf3QG0W1LMWRpkD9cD1PowgBSk=; b=KqzqliIh/E7WnCAT9VGUEbZbtDUOvCmG1UQk+pLytNsCvGwun4oLXwdKlhfC+IYgQRry arcrMz2C1OCnhUg8m/FKIzHKkhHHdoO1z75M5KxwoN2ioR3tJgRcMp4O7G/qiHW/0sdE 6HnNPEhDiKF33i7xjRGseEqwaULbIpwPYCw7eLEOi8SMXK2ccInrwOMajkUryZeNoFeF k+Miyzw5Qi0Bz9YSY2lJsrb9mpKjDyyn111OsvEQnRSOhZVCDVORItp6V3p1XGvSs6wK dqtfXGONYpevZGlOkwEiUdf/eNyM1lV0eCAztakRrVj0shlmRrimHIHE+A7ioy6bRgn3 xg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3wku1cm3p5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 07 Mar 2024 17:54:21 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 427HHmir005239 for ; Thu, 7 Mar 2024 17:54:04 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2041.outbound.protection.outlook.com [104.47.56.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3wp7nu55r5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 07 Mar 2024 17:54:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iZhKeXLC1wB2EwR12KHOvTpeLE1hIzOhnHeJRcoZh9lfTiSIY1iW0hZiro46/dZ6bms6xeVqUNfR3zT8gxTXF5qCIu7SB908C9LzOax49cXnG6j2dNIrwJppuT5b2iKmNFJ+/6CicXbhpG0un5AHRlQVPGTYMt1TZbXf6rubyTS+TondccG0H/QHA42glV73wfKrUt3OIfjY/JuNWkT/ocRndtxQn/iZpTi+dDl6CaRRFS0yLxdfuwNNNq7MhjekZA/76b+85ySh+CBH3GGspIk7vgMYGBSZzzzGVTEaIZBuM97FXAEnKiF03GCGM6fuwlZ1wwuxTPj6U0PpUYf8FA== 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=MvDO4qKeZnF4PutNSCf3QG0W1LMWRpkD9cD1PowgBSk=; b=J3P84q7wJW6L7y9MTi11XxPMA6w9Yi7Jt2n5jdm4zoc+QlOFn3h5+KmCycFW5+rBKikYx1rX4HrVbmosRLIwobZSYqsuxXs1icbQu6cxHeI9axq4btF2OlUP1eBhBc+mwtw+Oe5RW6oLdtEBy7cxEM79UMlNUs1SFjGrtpbWEpg6ecvGBP0mxfDOOQLKHScn9+WXXCd/+o3smDtPOROGe3NRdMw6/V+URIl/UUyeIKMmMAGoMs7i2uwkFc3Cwh35uNYcR4TNMCPnMGM8MJz7EujtE81HU9unPHVuifcm4UDWBxwqsQh+W3UzGn4fKy3cW3rt5t2msxYOo1jyV8tIIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MvDO4qKeZnF4PutNSCf3QG0W1LMWRpkD9cD1PowgBSk=; b=N6OB3QV8R/oWgwexHrhdv7ljv7LvEaTd1wBkUmcW4HMCYYmxaSELxOMFxTe0YZSA55SLqR5hS9QdDYNU3clRYxCj053Qrk0urEk7kKq8NfKzEY60e2MgtzOyn4WMxuzxdmzg4BzX82Qy9GSnBjJzpGZ4/QgJe8877S69xO8OzY4= Received: from DS0PR10MB7953.namprd10.prod.outlook.com (2603:10b6:8:1a1::22) by DM4PR10MB6861.namprd10.prod.outlook.com (2603:10b6:8:106::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.26; Thu, 7 Mar 2024 17:53:53 +0000 Received: from DS0PR10MB7953.namprd10.prod.outlook.com ([fe80::c0b9:6482:3e36:a112]) by DS0PR10MB7953.namprd10.prod.outlook.com ([fe80::c0b9:6482:3e36:a112%3]) with mapi id 15.20.7362.019; Thu, 7 Mar 2024 17:53:53 +0000 From: David Faust To: gcc-patches@gcc.gnu.org Cc: jose.marchesi@oracle.com Subject: [PATCH] bpf: add size threshold for inlining mem builtins Date: Thu, 7 Mar 2024 09:54:38 -0800 Message-ID: <20240307175438.25468-1-david.faust@oracle.com> X-Mailer: git-send-email 2.43.0 X-ClientProxiedBy: MW4P220CA0014.NAMP220.PROD.OUTLOOK.COM (2603:10b6:303:115::19) To DS0PR10MB7953.namprd10.prod.outlook.com (2603:10b6:8:1a1::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR10MB7953:EE_|DM4PR10MB6861:EE_ X-MS-Office365-Filtering-Correlation-Id: 82ee5b1d-432e-4e5d-71cd-08dc3ecf8dbf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YbRVX4g76RWQA2qzM2e/rGpHxb7F0ThSgz9jt2LmpdWk6XN1nxBjI/euynq3XTwfmHHnLO/JI4hfZkNzO7S/1rpeK1HT2XBtYdzizXXK7/4Q2a4yWBd+qOqZwWma+UBrW62KLAbWKhhMtRy6GsKTOqiqQj4dMPKiQZi/V29O1Q6tXwGROLwpzkIlD7oAmJxf2l58ZqydSbiRYLCixZAseTNuS+wzmXj8+ZnXc0+FJy6bjkZpcxCjoAb9Q4GIq7VeZW3Imh+uEVLV9rgYZF2HODgUeAc02afOEGEkJv3ba4+uILL/i0PmTuG62y0BFZ55wOGQHYLnxM1zdW+9KIKACXfYu7wXG6zIjQqLJuKXt1uu/1N6yN8UxIB75XlNdgLbSu6kdQDPWMcJC80wo3P80bnC9XKh0FZSCt5uChn1y0k3SEAZc8Ep2zig7LsjdmPhcLShzXBlIohvsZ4A0f6bS8PenVGfKeZu+y4BH41GDDT1HbwQPJ6svZi8hL5UK1F21uU3jxIn9qBtiyxYLxg/SAQn6UX8mBTwrko6x11upgZWHtVtrF9KjCerQQWBqGMettLxvUkzzzCYIRpThZ55T53c4otl7VMbSL3BSe82Dl+NGc426tWFN/U88ViM5Yxo X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR10MB7953.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(376005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3guuo4opset+nWvEZrxA9c2herwWcbNkoKTIZxECHlGpK8zF2tNuoOIeYHZFZiL4HrtaZDkoKRk75Q98+4FrTm9lxjoA+3KdC4kQA0vWS8jePxt0EtIMIAJslzvIyLZrG31x2jVCgyNJX9alFOkwsn8EWd0s/0U4Hn3eG3h18C9YHQcnajGsgHwZLmDewEqzSplP/le173liejumjvg6IAa8JMnAt9GPaUf6O7y9EYAAk3UGOakTHr9Vbe/S1V7QmASHkeKnHb6GDT8uC3QLo0bnDT7qqZmYXmrJ/P+tXIP2KVBDlsT+05rWkWjq0pecJFkLPDhadSfVBn1FJ1m3lqG5FpN8oaOnL76QTg8RtH37E4Lz8PxnkxJWU5f/8rmnAPgKwWqxAEQP8KnB8M23CNP36HeAAPaCDfwpwDmQg7XbdKDlNoXXAjIslhmv8LgDsRiX8HRmB4v6AGo8RUTsDmR/PjDUCnywVpkc8iKk7zjsySyRtShMpDCWm3BHFarR24sTEWljvX2GcLlas99qGiNlzCHk3c5YvHk1DkLr+m82/zugqmfqsQVwYs1Uc3+SXUgFpUeQlz5G77sMfFFLO6aJ0NB7QuM3wU9a3rUL7jrCzVRgLMJSaaZ4ccaycyvBifb5RKk2bseo7HP5PLP3OUdVLPSV2X0bsdsz/tfYJ0nTKGgT5tAslA1KphzcdfAjyVdUtgUtytgVoEZATeQvSgn7V8we6dY2l7ww3EWumH1UermyyDujkMTA4iGl+pHzRzBx9l98Pgz3LPDwJuvnlGdsdM0AkEoVDJpqEPoAHkb1DqNEVMKrn3qSOaNJ7Xo5SNbEQEsq8FGwPmnAzVLmPr53EdZA9yrmuSJjYV/6jRVT/W13EGf/PBw3kgMWiZ13M3ZcJfy33mQOpXJ2Ce9A3sWTHLRnIdp0a5gIXLMSPNbJHcw8Cda9E+6GVNifzYjO4suld31h46LPu8cUsQFTLvwcQvlRukayvf9q8riNGur6LlsrHWbcTfdR55k3hmF6LVnFgTyn29jaQh9TNCU9wHsxnRCcNO7UymHr1ZaSJ7hJedL6zpCMYFVnMImgcpBqxLYAL/PfIxUmhUEmTKY7ReYGjC/2sWWe+Wb29X2VPV+5uVty1nwAKVrjSNwYeVE2N1h3SjBYJqvbaEpyu/ZmzRaorJpghNOUCvrIq4y2h4i0flRv4mnfMGcZ7g5Ieh4i2Ec/K0CkdIr/BOSsrahgJ6Cb6OJXpYdaOrFjpt6QAz2H/NpsJgPs8Xt1vTbTWLUv4Z89urfox1oy5jzNuRK4FS1DyPhtyXVvM0Zkma2eAvoeqHRqJmkCow6B3WtaZIYInYF3bm3qtWz79tuBKzQZDnREmdB3pKMJ2IuNX7smhrtEdKgTPamrfXDE1Gt8y2mPnuJmBB9+zbwKgRTXVm774qQAVszubZsccf8TfapTduKu5Zrjg/aGau+6kupc3nAOV7R0Eez5Aqwk8+42juY09sOvZvjeTpocpZraBwk+5ep3meIjvY+VzgseEVSNEZCluJ7AA2lM7Gcsu1qq2yxA+p8Dk74kTXGPJ3Hza/i48SHe2an3anTa8kKMLxMudNQYGpDqCuXenPrdaD8vL0uLZQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: cTnw1P1he7gnmO2t4td6I9xUa5b9ADj2j6EEfg+VF3owpQc6vYxVZVqRLZt6ENzUMgRuM216VHdfbu7d8pfZ1A0SUKqvgVE9ZIBT05muImGOJOTaMkMpnzuFNCuGzbvOtjAU9o4ZvFztTSh+B7B9lZJu9VBoHjWLkgPE4DFc81QSqjq5llcXQgeRe3pJXL0I3ewF3GeC1tSS45Nyg5NH9rsjZXAUdMI0W9nPv7MOrPK8qfESnUYIU1KX1jEAt7WoRv1UFzil4YzlaAmVXB5PXlMWD1SlXAzcRw2eAeBYnTTYsDYDLEryQZlz5SD1Y1W7qygnhV9+vDuxa1y5j02k1DCiL8P3KvieWmow4iSYN5vluOwq4aFtUvoUEstjs0AsqfMl5SFXEmxl6RMa6QNiaf9E+Zv/fClCeu56P9PFSGT0wd7IAJ7xDntJtHgfWiAoAqTsRlSWpmDhw183D+RnFso2YSQFmFIua3x5W9OJxU4fi3NOjUoTTbfkkmBnL6dNuC4jhzaWFa2CW+AYZPk9VVeN/PNBs7/SYmzJnXVCP8bTU9EeHbFOvpv31g91j2YosM2c2Auz4hr4ZcR/o3K+BE1ag2F4C8hrnJVxkN1u86I= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82ee5b1d-432e-4e5d-71cd-08dc3ecf8dbf X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB7953.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Mar 2024 17:53:53.8532 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qbcby2mR6xKOngaPf8UxIuDmd3YEZ111HmO8UZtZjbyLJW1ns1bxIEF2J8jrM+NOzhRztsZWxoZ/zhoKik1caw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6861 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-07_14,2024-03-06_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2403070123 X-Proofpoint-ORIG-GUID: VnXyoeY7BcazTpy29bjobLIcfwAvg5AU X-Proofpoint-GUID: VnXyoeY7BcazTpy29bjobLIcfwAvg5AU X-Spam-Status: No, score=-13.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org BPF cannot fall back on library calls to implement memmove, memcpy and memset, so we attempt to expand these inline always if possible. However, this inline expansion was being attempted even for excessively large operations, which could result in gcc consuming huge amounts of memory and hanging. Add a size threshold in the BPF backend below which to always expand these operations inline, and introduce an option -minline-memops-threshold= to control the threshold. Defaults to 1024 bytes. Tested on x86_64-linux-gnu host for bpf-unknown-none target. Fixes hang in test gcc.c-torture/compile/20050622-1.c for BPF, which returns to (correctly) failing due to exceeding the eBPF stack limit. gcc/ * config/bpf/bpf.cc (bpf_expand_cpymem, bpf_expand_setmem): Do not attempt inline expansion if size is above threshold. * config/bpf/bpf.opt (-minline-memops-threshold): New option. * doc/invoke.texi (eBPF Options) <-minline-memops-threshold>: Document. gcc/testsuite/ * gcc.target/bpf/inline-memops-threshold-1.c: New test. * gcc.target/bpf/inline-memops-threshold-2.c: New test. --- gcc/config/bpf/bpf.cc | 8 ++++++++ gcc/config/bpf/bpf.opt | 4 ++++ gcc/doc/invoke.texi | 9 ++++++++- .../gcc.target/bpf/inline-memops-threshold-1.c | 15 +++++++++++++++ .../gcc.target/bpf/inline-memops-threshold-2.c | 14 ++++++++++++++ 5 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/bpf/inline-memops-threshold-1.c create mode 100644 gcc/testsuite/gcc.target/bpf/inline-memops-threshold-2.c diff --git a/gcc/config/bpf/bpf.cc b/gcc/config/bpf/bpf.cc index 0e33f4347ba..3f3dcb0a46b 100644 --- a/gcc/config/bpf/bpf.cc +++ b/gcc/config/bpf/bpf.cc @@ -1275,6 +1275,10 @@ bpf_expand_cpymem (rtx *operands, bool is_move) gcc_unreachable (); } + /* For sizes above threshold, always use a libcall. */ + if (size_bytes > (unsigned HOST_WIDE_INT) bpf_inline_memops_threshold) + return false; + unsigned iters = size_bytes >> ceil_log2 (align); unsigned remainder = size_bytes & (align - 1); @@ -1347,6 +1351,10 @@ bpf_expand_setmem (rtx *operands) gcc_unreachable (); } + /* For sizes above threshold, always use a libcall. */ + if (size_bytes > (unsigned HOST_WIDE_INT) bpf_inline_memops_threshold) + return false; + unsigned iters = size_bytes >> ceil_log2 (align); unsigned remainder = size_bytes & (align - 1); unsigned inc = GET_MODE_SIZE (mode); diff --git a/gcc/config/bpf/bpf.opt b/gcc/config/bpf/bpf.opt index acfddebdad7..541ebe4dfc4 100644 --- a/gcc/config/bpf/bpf.opt +++ b/gcc/config/bpf/bpf.opt @@ -108,3 +108,7 @@ Enum(asm_dialect) String(normal) Value(ASM_NORMAL) EnumValue Enum(asm_dialect) String(pseudoc) Value(ASM_PSEUDOC) + +minline-memops-threshold= +Target RejectNegative Joined UInteger Var(bpf_inline_memops_threshold) Init(1024) +-minline-memops-threshold= Maximum size of memset/memmove/memcpy to inline, larger sizes will use a library call. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 2390d478121..7a965631123 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -971,7 +971,7 @@ Objective-C and Objective-C++ Dialects}. @gccoptlist{-mbig-endian -mlittle-endian -mframe-limit=@var{bytes} -mxbpf -mco-re -mno-co-re -mjmpext -mjmp32 -malu32 -mv3-atomics -mbswap -msdiv -msmov -mcpu=@var{version} --masm=@var{dialect}} +-masm=@var{dialect} -minline-memops-threshold=@var{bytes}} @emph{FR30 Options} @gccoptlist{-msmall-model -mno-lsim} @@ -25700,6 +25700,13 @@ Outputs pseudo-c assembly dialect. @end table +@opindex -minline-memops-threshold +@item -minline-memops-threshold=@var{bytes} +Specifies a size threshold in bytes at or below which memmove, memcpy +and memset shall always be expanded inline. Operations dealing with +sizes larger than this threshold will be implemented using a library +call instead of being expanded inline. The default is @samp{1024}. + @end table @node FR30 Options diff --git a/gcc/testsuite/gcc.target/bpf/inline-memops-threshold-1.c b/gcc/testsuite/gcc.target/bpf/inline-memops-threshold-1.c new file mode 100644 index 00000000000..c2ba4db5b7b --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/inline-memops-threshold-1.c @@ -0,0 +1,15 @@ + +/* { dg-do compile } */ +/* { dg-options "-O2" "-minline-memops-threshold=256"} */ + +char buf[512]; + +void +mov_small (void) +{ + __builtin_memmove (buf, buf + 2, 255); +} + +/* { dg-final { scan-assembler-not "call" } } */ +/* { dg-final { scan-assembler "ldxb" } } */ +/* { dg-final { scan-assembler "stxb" } } */ diff --git a/gcc/testsuite/gcc.target/bpf/inline-memops-threshold-2.c b/gcc/testsuite/gcc.target/bpf/inline-memops-threshold-2.c new file mode 100644 index 00000000000..190b10b579c --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/inline-memops-threshold-2.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -minline-memops-threshold=256" } */ + +char buf[512]; + +void +mov_big (void) +{ + __builtin_memmove (buf, buf + 12, 354); +} + +/* { dg-final { scan-assembler-times "call" 1 } } */ +/* { dg-final { scan-assembler-not "ldxb" } } */ +/* { dg-final { scan-assembler-not "stxb" } } */