From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id D7970383DB87 for ; Fri, 13 Jan 2023 18:29:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D7970383DB87 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 30DHB0BB020766; Fri, 13 Jan 2023 18:29:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : references : date : in-reply-to : message-id : content-type : mime-version; s=corp-2022-7-12; bh=JATuLktXstX28ejAtpV5QK3eFeW0+qk282dTtP9hFUE=; b=ZIhu/svT3Tm+tqq+8V7gKRTI1NALFiu1Yq2TZ0kM2gtBpqFny75RHsovrfCVoKEVaqD4 AtqFnvMZiv2VNwzrR0an3vmInUEys/0hA9wsSWcfzNwvSVmGE8iydSMzmtf1H62lc1JP R/z+UV6DRDPFQrYEZ/e0kMo0TunriMlMRpg9ar0gcZ7Guou1cKc1QdmUvwtbsLOOZZCu KiDp0DPf6bAFNxL18WNDLWpLGe6PmSd6X+/lo97KdT20gfl+CvnmZURjWsCLNLz0zYpW iE7iyhDyxfzQGD2fdl2KQwAlUdLQue4GGiUY8iBQ2b9iY6LljpSrl/k4ErnsgDrjjsO3 Jw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3n33sph4pr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 13 Jan 2023 18:29:33 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 30DIT8IP033909; Fri, 13 Jan 2023 18:29:32 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2173.outbound.protection.outlook.com [104.47.57.173]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3n3cm9g0dt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 13 Jan 2023 18:29:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l8x12EAdi9niEKd1SWEJJQ12Q3CXgNWz9IMd+iWF5So5tWrTItkJjkTcHSQx25qA6TUB9VDPQGwDPaZLzARdQ0kmjmUK/HJts5sa68pRgzKGu/ic2oKddtKyJGTP0XY2CP187Rkuu/VBVf0S4KRheLFUsnHnfpF47EjWdbuyGTMXaEz9J+9JPCHl4cLiWXzZlAmTsmcc4gZz0lS0NUqu1VA0d1zUX9d5IrLISMKa05L4A9dLwqFr8WA+PCDVNObYNO3vVauxnRdQWZGlv/FFZKwmSHVna3g97jkiw0iYxxUs84IbtjjF7RtSm5qvXnXQ7qN3hjbsjBnGaC7+r7+edg== 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=JATuLktXstX28ejAtpV5QK3eFeW0+qk282dTtP9hFUE=; b=PTi3qN3iDjN5z0+RLDOWpSpiN3hcZZeWwb8yezHTj3OPvB8G3w6pjgGLRtEALzNRns7xp1KItoXiwMx0B2USrjF5gD0ZeaIS8k02PCxJmqrdmX8X2+NcFmyVTFUtwAmVXH2POHUQ7S1zfjNCcsBl/2qCRxJ6YtGqPhPoLaYOSqOxIaBBkZD5/fOgXcpM9CSFWgHYhpWo4BTqhAqkK3jgnLaZ1klglXuBYA0xlD97AhSKFGK8wRymMJohQSiWoDbkyFJADuc4DHahqxRiH+OQyjUSZ8mHUujAyMPXUIv4YKftVs4kqDqBMGDK51LTwyb0NhnicSvcjU6YV126qu6iQw== 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=JATuLktXstX28ejAtpV5QK3eFeW0+qk282dTtP9hFUE=; b=fWv0OHnTqFeFi6MZBo3harI9GLQIoFGTKgDr66lmtKkkZEiT9waRZ/6EwNJuLbuY4GbbTa3C7PnhYUSsZa5fNta4nsVU4notp6oOjfUiScKq0SDgePAH5yBS6OQCSmhuJYapl6lJndAQSvrWnPzeq+lgiP2Z5pMMpsynbI1BaVs= Received: from BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) by DM4PR10MB5944.namprd10.prod.outlook.com (2603:10b6:8:aa::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.9; Fri, 13 Jan 2023 18:29:28 +0000 Received: from BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::3cd3:9bef:83f:5a85]) by BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::3cd3:9bef:83f:5a85%3]) with mapi id 15.20.6002.009; Fri, 13 Jan 2023 18:29:28 +0000 From: "Jose E. Marchesi" To: Alexander Monakov Cc: Alexander Monakov via Gcc-patches , qing.zhao@oracle.com, richard.sandiford@arm.com Subject: Re: [PATCH] sched-deps: do not schedule pseudos across calls [PR108117] References: <20221222173208.13317-1-jose.marchesi@oracle.com> <53b93d7e-a157-9116-d07a-4d51cd43d205@ispras.ru> <87h6xm1jvj.fsf@oracle.com> <0cc6e188-c64c-e8ea-83e4-1d06f5bf4f55@ispras.ru> Date: Fri, 13 Jan 2023 19:33:21 +0100 In-Reply-To: <0cc6e188-c64c-e8ea-83e4-1d06f5bf4f55@ispras.ru> (Alexander Monakov's message of "Fri, 13 Jan 2023 21:20:12 +0300 (MSK)") Message-ID: <87edryb7ym.fsf@oracle.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Content-Type: text/plain X-ClientProxiedBy: LO4P265CA0004.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ad::13) To BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR10MB2888:EE_|DM4PR10MB5944:EE_ X-MS-Office365-Filtering-Correlation-Id: be716229-3324-4daa-fadb-08daf5941b18 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: v+dc9khQNEoyauslwLo/THht8w7t3UE5wEOFzNcwiy706CPKoj6dR8PRfyK1+5UDXRBXzz6DpKz1dfF6uU5wcJsQSicCmlEkJMFc5oXAz+1zSXfdF8uxCMZ8VuRefTiH5A3FByiwshNyKcLnOMTpab5hLhRiksS1dorRWrjf07i3DDd9DXOWunmfb3Go2+K9cdSypf7QnO0RumIE9wJETzDAuxG7L9kGk7wq/tEBHi6DN6T0jrK9tIDKoQ1e2noQqUdiQur7TJpeN18AxswZzp/RlDbwg/uSUdcwdWwZRGmG7U+N+DNt0VtP4V1Ul8ASR4S5TvW1kD/zuwr2nYKJvuExqg09Lds7b/MAX6/PiPYUF9NSGsb7eW3YyBl1vuT4NWHtQAlY+Ww9uQBpFxD4KDUGzfAG5/a6BnxyNaJsx6HjZVqPrDSGcRFAMQjIOye2VujQafj7H+HEH5YkHXM6WFluaDL8GcezE93NUz/ftj8jQx1eAVd8BaUKJ3uzlbg3KmkwkayPFxaTegCz2WnGPLb8CjhvXJHCJMJ5BuSuqNPfsRfhhzO840uwdFlhHJcsFI1NSqBhmJNaqf9D76O+s65kUC7Sr1CgLaL1IfbVCNZKKgdk9jM2WMfIm7BO1/ZDBMS6qg9YFOfbo2LQLRw4tQhlTlchK+BtT5a3awFQF1Y= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB2888.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(346002)(396003)(376002)(136003)(366004)(451199015)(6512007)(6486002)(26005)(186003)(66946007)(66476007)(53546011)(84970400001)(2616005)(6666004)(66556008)(478600001)(316002)(6506007)(4326008)(8676002)(6916009)(38100700002)(83380400001)(41300700001)(8936002)(5660300002)(86362001)(36756003)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?nfTQVQQUaUldL4Pi44NQpBkdIgnjF5cPfkLmo66xkIl/QH5a6fz/Ahtu9V4r?= =?us-ascii?Q?xb4lfwxnD1IF5gzRCoqrd+w1Do7zlFT8lcAS3+XSlbfYUS3wI2QCt4o84pBs?= =?us-ascii?Q?/IOmhr0M6h8dF6aHyRQe5H8711WsqgTyMzHmm//gCAYk8erTodx5aDV8Sx53?= =?us-ascii?Q?ZjjZSjv5+Dek+xfTcC3UAX2Kgcc5erdw5Zqh8/fmx8UW0Do6QNBBDF23B1ux?= =?us-ascii?Q?DAITDxTIv8PxdXiudpt/A+F+/P6i5WOTJcjQJUQ9iMslFufb0NJCWJbdZAyt?= =?us-ascii?Q?gp8/LjwBq2nQwbV87ORy51dtpVRQXMlV0qDMSl42ZPaURbHhI05mYsmj20ca?= =?us-ascii?Q?4AMplFv7N+kGd+tQXpT9FsktErTtH+RNp4BU0FXzOWsRP/dLz5a+OmgB8qVx?= =?us-ascii?Q?7+FOPMr/UvRfXO5ZfEPinA6eJ/vKnikiNyw/QcTZRM5CeJYPo1bWVx7K4PJc?= =?us-ascii?Q?y908e/QmF9OUrSsKtzQodu0pbtrcCHRGQfS7sDdjXF5FKSLDln2+hQ84HrTr?= =?us-ascii?Q?exhuY9dzp827tsK4sIV8lGvFWmUbx4/0JrGuOvWgW0AGSNmm8c4hX3vsphYc?= =?us-ascii?Q?uSL64By3vN7HaxwG/JbeDioS6ePPwAmf1WifI4IVG50RfdNl0tnR3HLcUiNw?= =?us-ascii?Q?05dS2LNrzEVlseQ4D5n/43M3QLwxoM2I4xlx7+EEqBZR5cbEJbTUZfJEZQFd?= =?us-ascii?Q?HyDZvJSmi2talBYsq+cbtxSlvaP5YCVT1IdpBStvRiprR6joO0OUEzhBGpZv?= =?us-ascii?Q?BGp1Mf0sskRGpVNCgS5fT/RCyvYmszMBRxYnAfUtLgWLbxW8Zr/GjNpwoTMw?= =?us-ascii?Q?fd46b9Tzkr6TfS7uVTwtRgMzCyN68LadrN3PZk1vruC2IaRvrohuyiTIKTP/?= =?us-ascii?Q?KhYMj2tIx8VMYJ/yiw3KHz+Xon/6CPFfNNd016ylTEmQaGjN73m2M6jGPgBG?= =?us-ascii?Q?JEMKSG0GyU12Zwpa9PSvlyvSp58u76jnPUrxD+0kDKwbgCmBGL8DUYERTUAX?= =?us-ascii?Q?Be7FvDSCOy7D+YYxFezKikm6jxz7l7688poYk3onsyKufQg1YHh4FpwojKsV?= =?us-ascii?Q?rvW2XHYTl2Y9dFLWFL4jtrr85DMH4ecrVoICLzT/cp9o2Q0UMpFzfw6yDtlW?= =?us-ascii?Q?Nh9ZofnE+f7kEhnzuJfyTxgmHxT5djvDBXg80IhhSlep1HZwjxT+fknlrxbs?= =?us-ascii?Q?KqMrEZLU4ActGx6VrpleuvGG1mcgMycQeuGUNJrWk+OjL3+3S+NQ74vNHUE1?= =?us-ascii?Q?TdOdmE0Tj5LqdlXMYLrrWDEIdN0OADLh71ihk5fTDzU0i2+MMQ/EPvrE0Yyr?= =?us-ascii?Q?6Edw8W6QgW7ANCiENegQwuxB0NGCbb8P9KEC7Vc2kkDkqg/R7Jk6jRJpeWnp?= =?us-ascii?Q?n4IZU9gkAI5QCBEbv0/0UPicNw07PMn1y58psFVlNqYJw71Hex625h8EloZw?= =?us-ascii?Q?58fHHjFdsD/tfBphW4F+UVQ2hi6f+hp8RIoWQVuV0W93cRgJo8vvO7faZEhT?= =?us-ascii?Q?h7auaUMOVo8XEuyMEo4idXIu4C0VWlNrFi9+n6akx/X/hT5xF/jFaZ/gGd9P?= =?us-ascii?Q?S3E5ugJ4PD+GeB2QYYqiHynEIsepWykBBvdIliFDX2DA/jZ8Ra3WN4MAWJC8?= =?us-ascii?Q?Nw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: CmMhm7QtW+CVHlHVHTBhFMRKPPNRiRJRXUCJ8L2J8fZ26niml9oLbL1gPTEtkkbtxp4w3fFpvdE8sacj4nPh0EakqQc4x9L+kCiOKYTEEZpU/vPqosvPwCQdWBl7BxrMFr0J1Fd/V6MeKsVztfAVwFrJ1uqNFCDdMyIf0q7t0Fh2Jk2TMXgaFifbrNMzymrQw7x7Mo4OHtB1xJnK4lofUKBOA0ozMghj6EkIXeLVHw9fmYxvuYJFiXdE96Lk2luHzZvJJZjT4Mw9nnwpVe1aDJa/n8Mzp32A2S2dW4a2Cu/dc4gn5JaIbWbk7/JACFzHjG1m3m4g1WvZZgw2gho4cI3MOeBusFVmxvfmSQnM+RZD0HaHPF0N/o9ok+Gw6rWkW/WwrU/WHJi8NpkCiFLHStFkd00MQL/ITunJN3UgqJ3jwDx0MmuxhD6FUGPmpTdeHnHGb0IVBjkr6JsWgxBmGxS62Lv3mQo0fzFpsMD2q/EZcB20QYMng1kEKK7+r67hRON6/cdCb7EqvrsRiWeIQGSb1GYyOK4yQk+9bEZ6tkLmF5XIc0kbNEmAWEf/J2tRER7Aa4jb95tom5d69hFSM4zPyTH+m7O91T1xLer27zT1rmfrxTTGw1repdYJ4mIHg5s3pssDULpYr4oSXTPtkThkh6Hpt7KMgu3gmBJROOc94EIQ311KMON4gqbh131dLbDnylTbj+OT7hXCiZVPSe6ba0x/7umcnLyudBsR3ac90PVEHb1qit4jq6ZyPtthgt8HrzvFLI8BkhW0fkvDT1lPIlFw76/XNrgxhV924io= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: be716229-3324-4daa-fadb-08daf5941b18 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2888.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2023 18:29:28.7901 (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: 4jwFG1xtrF8VmrcUcIbVMfTTpwi072jaKdDWbcfPPZSlIA3LOVgJKuSmcXktUwD0hoqBgfikBGXn/VdzWRKnSww8T4cONkTjyaKncm4Uk6M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB5944 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.923,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-01-13_08,2023-01-13_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 malwarescore=0 mlxlogscore=999 adultscore=0 spamscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301130125 X-Proofpoint-GUID: d-CILhRsHN6JSLpX6rfv1gy5wzqQe48v X-Proofpoint-ORIG-GUID: d-CILhRsHN6JSLpX6rfv1gy5wzqQe48v X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP 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: > On Fri, 23 Dec 2022, Jose E. Marchesi wrote: > >> > +1 for trying this FWIW. There's still plenty of time to try an >> > alternative solution if there are unexpected performance problems. >> >> Let me see if Alexander's patch fixes the issue at hand (it must) and >> will also do some regression testing. > > Hi, I'm not sure at which court the ball is, but in the interest at moving > things forward here's the complete patch with the testcase. OK to > apply? Thanks for this. We were actually on it, but of course busy with other stuff :) > > ---8<--- > > From: Alexander Monakov > Date: Fri, 13 Jan 2023 21:04:02 +0300 > Subject: [PATCH] sched-deps: do not schedule pseudos across calls [PR108117] > > Scheduling across calls in the pre-RA scheduler is problematic: we do > not take liveness info into account, and are thus prone to extending > lifetime of a pseudo over the loop, requiring a callee-saved hardreg > or causing a spill. > > If current function called a setjmp, lifting an assignment over a call > may be incorrect if a longjmp would happen before the assignment. > > Thanks to Jose Marchesi for testing on AArch64. > > gcc/ChangeLog: > > PR rtl-optimization/108117 > PR rtl-optimization/108132 > * sched-deps.cc (deps_analyze_insn): Do not schedule across > calls before reload. > > gcc/testsuite/ChangeLog: > > PR rtl-optimization/108117 > PR rtl-optimization/108132 > * gcc.dg/pr108117.c: New test. > --- > gcc/sched-deps.cc | 9 ++++++++- > gcc/testsuite/gcc.dg/pr108117.c | 30 ++++++++++++++++++++++++++++++ > 2 files changed, 38 insertions(+), 1 deletion(-) > create mode 100644 gcc/testsuite/gcc.dg/pr108117.c > > diff --git a/gcc/sched-deps.cc b/gcc/sched-deps.cc > index 948aa0c3b..5dc4fa4cd 100644 > --- a/gcc/sched-deps.cc > +++ b/gcc/sched-deps.cc > @@ -3688,7 +3688,14 @@ deps_analyze_insn (class deps_desc *deps, rtx_insn *insn) > > CANT_MOVE (insn) = 1; > > - if (find_reg_note (insn, REG_SETJMP, NULL)) > + if (!reload_completed) > + { > + /* Scheduling across calls may increase register pressure by extending > + live ranges of pseudos over the call. Worse, in presence of setjmp > + it may incorrectly move up an assignment over a longjmp. */ > + reg_pending_barrier = MOVE_BARRIER; > + } > + else if (find_reg_note (insn, REG_SETJMP, NULL)) > { > /* This is setjmp. Assume that all registers, not just > hard registers, may be clobbered by this call. */ > diff --git a/gcc/testsuite/gcc.dg/pr108117.c b/gcc/testsuite/gcc.dg/pr108117.c > new file mode 100644 > index 000000000..ae151693e > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/pr108117.c > @@ -0,0 +1,30 @@ > +/* { dg-do run } */ > +/* { dg-require-effective-target nonlocal_goto } */ > +/* { dg-options "-O2 -fschedule-insns" } */ > + > +#include > +#include > + > +jmp_buf ex_buf; > + > +__attribute__((noipa)) > +void fn_throw(int x) > +{ > + if (x) > + longjmp(ex_buf, 1); > +} > + > +int main(void) > +{ > + int vb = 0; // NB: not volatile, not modified after setjmp > + > + if (!setjmp(ex_buf)) { > + fn_throw(1); > + vb = 1; // not reached in the abstract machine > + } > + > + if (vb) { > + printf("Failed, vb = %d!\n", vb); > + return 1; > + } > +}