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 371683858D1E for ; Fri, 23 Dec 2022 10:38:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 371683858D1E 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 (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2BN9kqdO016100; Fri, 23 Dec 2022 10:38:37 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=uebTtImIE9Lk1O4duXTtRxVEjLi+Wi1Svb148KsNlKY=; b=wAuhBg56hH8EyfpDz4t4yGSv3wAeNRwHynN4kRgPow+K4HDP5/wnCTuBZI38i8v+j5l5 DZfMSP24LZEHZ4QsjYcPpfg+JNyTxTITCaI+hJQokxTKVmXKAXYzYKNUYTIv/UmAr9/9 O+hZv9oH4WxkwF61ct/1QgmBJaLa1P+xRkKQhRhW33eRcOrykabJ3DDvxs2XDdQmtzWF r3VdNtPihMNOPwvVFjoHQr7txQHSILSC7S1N1RUICK2IQcgwje+fbT7hpfOCztBQDgCK lvQc9Ghj7jJWIktQqR1+luCXDI49zk87c8jS2WAlgMvX/+IbKbODvyASCkDcCAKQohg9 Gw== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mh6tndbsq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Dec 2022 10:38:36 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2BN8dx0E031841; Fri, 23 Dec 2022 10:38:36 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3mh47ffj70-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Dec 2022 10:38:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XP3Bam+MRMbfhBW8NPcu9pSTYF/yYN4+eU5YPegjEKEyfHn20x6E7vKPCxZcFR4BIlXdoFHx6Ab4lv4amXVuq6JoRzMuTVV6Xrv5XFxMnEKShrE53RBbY2BqudhrdLhE2mxCDkP06nWi8awFVEiPIzGWV3bkGHmLT9ltRxsUlEXXutwVkZ/CcvnV6me+WJ0GhPNdFE+Ne8uFoQVENhKVNmBmLR9zH6tMXEtgVSnL8KZHioYAurb9+WTDSeWvw8y1AFGPvM2QTr6LwTzM1pDuLFh/d1mzUdDYcLUsTLTXXcV4hGoo2tg6Ij91RM0Uw55/9VPO3G22J1QYKODx8QfsUA== 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=uebTtImIE9Lk1O4duXTtRxVEjLi+Wi1Svb148KsNlKY=; b=HrTAyVkjsOlgKxJpQUCzGFSlgAdFFbGcImSpB3MFqpv4DP4WDXDQJO5zf3s2KSE6ysjhZ6Lz1kCPNrSErh6JmQlA4ndxwlqB+ajLQnur0xu+g8OJonDUL+m/nSYO+Ma0uiIrU8kKw2bxaQT21YAfKoxG+yuZOlvZGUJoxJWJ54AiagtNGITn2iPDLwFysjou/+ejU61akRpQpS/+kuVzrrlSjHdsux4FvQexkiJUbS5dbJD+3kGDNVtNMUP6MARSOr8A3LHMCRb5kX4LxSTOYaZXcdsNdppQ+xxZY9QeARgocIxQlcjFvD1pMmVE1uR6nrUhnyWbKyTxYVsCigol0A== 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=uebTtImIE9Lk1O4duXTtRxVEjLi+Wi1Svb148KsNlKY=; b=uSnAf/nqc8WG5WnkTt9g81V3kQ9PI8l/oklY9rRnzImCPAYJqUe7RI0MJ38j3STPXKfgC2QxbJ6LIu0/aAUAq/ctVM6zIATJHdjXzEI24A2WnrdOzaPZJJChoTJVPW1pBDJZ+vXH9vg7kKCSpxpdlF/u+ZjJsxeJH8vqhJGuhvc= Received: from BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) by BN0PR10MB5190.namprd10.prod.outlook.com (2603:10b6:408:12b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.16; Fri, 23 Dec 2022 10:38:33 +0000 Received: from BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::ebe9:b7c9:82ae:d256]) by BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::ebe9:b7c9:82ae:d256%7]) with mapi id 15.20.5944.013; Fri, 23 Dec 2022 10:38:33 +0000 From: "Jose E. Marchesi" To: Alexander Monakov via Gcc-patches Cc: Alexander Monakov , qing.zhao@oracle.com, richard.sandiford@arm.com Subject: Re: [PATCH V2] Disable sched1 in functions that call setjmp References: <20221222173208.13317-1-jose.marchesi@oracle.com> <53b93d7e-a157-9116-d07a-4d51cd43d205@ispras.ru> Date: Fri, 23 Dec 2022 11:42:40 +0100 In-Reply-To: (Richard Sandiford's message of "Fri, 23 Dec 2022 10:05:18 +0000") Message-ID: <87h6xm1jvj.fsf@oracle.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Content-Type: text/plain X-ClientProxiedBy: PR0P264CA0222.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1e::18) To BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR10MB2888:EE_|BN0PR10MB5190:EE_ X-MS-Office365-Filtering-Correlation-Id: b71f22dc-fb0a-46fd-957d-08dae4d1d6e6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Whxs6dTnOuPrZ+xaGFisH5fH6oz3mi0p1mcUO5ruDSRt0v0dFwFRy2tcVBwhPBpdvHu0rjgiAxOjXWhZJsongLregly/TimVoMikxivZc5UFECpUNkz5tz51lSqY57YM4Jx4fUtdev12meOjFO7fWeHPq0kj6A6oNNSl5J2rWLB2uGjP6RUyCMxRQXlyoBMvZaqOmKYHp6z8KEKo3eN6bczn6r4/qIuA+CSntD/XTPPdqqOeHbu4q6PPe+MoOpn22tnzLmWDha04M2VDgPQAlw4TChwwkEVEWXW57PfkFIVU8XdFC7+WpA96Nav7tJstxaNyYBMnyGYyLfw1Nc8uCmeRdSzbEzf4ZGIn9rjV6+vRjj0YNW3ycQwh8XuVQFcwX5Qd0aQ117wDGLuJEUTfCJ+4suGqQ3+IUJRKJUOqSEzim7mn7IIUv+saLdkyJeocq8j1biRrNXOVx/Gk4fgr3HhwL/FkWVdGhQ+rGNy/5MslIMEg6kB+x558PjM2Cnjq3zsjYdEhIxXG0+4HLfbP695Fa4TjQVfcPyMgPretqjljosI4UUM7FM3PS/qYm5Xwdgnr6Dfr5wkFn91A3UFPTDRZbFC3mEis+yPARbuOwTFSZSN3L8gMumceAtE5k0GD+0tYZjF+eVrIRGEB9ZXIkA== 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)(366004)(376002)(396003)(346002)(136003)(39860400002)(451199015)(5660300002)(478600001)(6916009)(83380400001)(86362001)(6486002)(6506007)(36756003)(41300700001)(316002)(26005)(38100700002)(66556008)(66476007)(66946007)(6666004)(4326008)(8676002)(2616005)(186003)(2906002)(8936002)(6512007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QTOD5dYOdrRb7q1+JMadMxm+3XboMt+cSuFura5bJJvfaRtZ8sHp4fePsyle?= =?us-ascii?Q?HjDIiP2VAV/MNkgdkpsJGYx4xbv6oyIPbByqYGh+FXA0emfGaA9fQdMT8lsq?= =?us-ascii?Q?RWM+vymlttW3ZacRgh4k6aLyGX1iElwfX7he00Wa6xDmUSn+OHpVcixl59s2?= =?us-ascii?Q?9J8z8ER/vbXdbwyA9MeYyOohgldUbnBSu1Vg3rEKbtzceN+iDz26mOh05nTr?= =?us-ascii?Q?vfvAakFRQHonDSzPD7+vTyAyPa+9DaiEyvb0YW4+gsgc96vzzZDUlerzvCZ8?= =?us-ascii?Q?W9X974FddZvbtf8y33hPRiz1WRUXCAIEA0Y8bUbjwhElLj893zif3JDLDP6o?= =?us-ascii?Q?281W7up5qi1V+0idI7P6y/RTbeQPTFHciC+MJhhyloVdln1KopGbEaDTAwtY?= =?us-ascii?Q?8wHd7SL38Ae+CPpy/xHyGNYxbDXj6s9F2Id2qlmYQYOSTYqgQS5jRgUhIes3?= =?us-ascii?Q?pgPxfPltobUDi/npdyieCdDHuzhYXEz1VdPT/uhw+Qu62xvIe2d6mzdhQdd8?= =?us-ascii?Q?qSGSiBEThXKl8AP8zeUJVyNkLuVnCwHd0cPyFAj/sbVa1AVZJQSMXbzEyR9k?= =?us-ascii?Q?5tE6cfoVBMKjXS/QwzeiS2JL6kpWLoMcbghgLbVybiBH8/uN0m8x9BDXLPIX?= =?us-ascii?Q?JIF7dGD375PydhGi/pfb3yWqUyJj/+RzJ90zBAFXJa4qAVt/HQiIy78mETme?= =?us-ascii?Q?NtKk0LArDo4akfKxMkN8iUR1wTszc/5JUasM/ELzyE6XGlwXMcRfxlive+ZD?= =?us-ascii?Q?HpcJ4FqcLJNHMcuvKJWmSXSKN/WKDNpKsmyQPLXB5cwS7QYOKwV4MuILg+0r?= =?us-ascii?Q?UUp88QSAAkRZz1NPjNmOIG7HwHgyrL08+L9ZbVWePNo3u7Q1UfeG2Tdu/ouU?= =?us-ascii?Q?gsEJTRf8Vd/yqKXAhqd6E/MslOQxEuGyKbfc3UlGuOi6AXSneWu7zk+NpPAX?= =?us-ascii?Q?hsUWPfPjs9Kab3yOenIlcrxA9LuRF7N2W6twTLUAfLOHeICfmHLKeXafXReX?= =?us-ascii?Q?qeQj0pAvqjaTqmADoV0KUlc+FkPBjfcFOwA1wzJn7SUqu6ZZVYFva1KKjbTN?= =?us-ascii?Q?EHVJtPiED+NDL8ZScoPNUnBLi8aGN2qE12d2PcVKnW9Qu6wMnyEOxrssuniW?= =?us-ascii?Q?1LAuilgmYOzpreqxeQMZcavMdr2bTcQbM2yCftqLiDoAAKnzGKOMfxS1ybtv?= =?us-ascii?Q?jgkb6saT1VdTLRvhuZNNO0U4LFvH+9yfzcvWOWDX5j9HkiYrA2L3pc3B118A?= =?us-ascii?Q?hmNqaddNnCjJG2Ymhb5LgQnOaNYDRHebkJcFVURJW5dESxtTVTA52ks9iTIB?= =?us-ascii?Q?QeTLvz6Fuy2+hht4KwAjMHgsJN26eW3npclAFhO4nAM2H0c8jxutFEmGsbIT?= =?us-ascii?Q?bzkrZQqySMaW9mrp2NzYj+JV8XQBaisBc7m0ko/NXINzMHhQcPDCDTvnq7J5?= =?us-ascii?Q?jiWYLQ4JFzdvwWLjy1XkIVSoXWJ+Pyyhov8sjeSPufrjqA4bwxdbJOl6zvN8?= =?us-ascii?Q?CoYnwTgGTwESLaalC4qhp/90VARuOr1sRaL0bnJiH+XiVBZOwfVBhR+EXH2e?= =?us-ascii?Q?WSqtjub0mvZlSq3KRXGyXsH4VMIcKeYY8WvNaAeVbAb+sN77DvSSY+oMcQhg?= =?us-ascii?Q?gA=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b71f22dc-fb0a-46fd-957d-08dae4d1d6e6 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2888.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2022 10:38:33.2486 (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: xWkwtTeFkVgN2vhutBE3AwxNQ1P2R85D64sZUBMMlQ40nDj2jnfTXasHswFdIz8Ahyd3NLkVjtDFWz/tOGcFVB5Fjg+cq/Rnsc4MJx78OWA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR10MB5190 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-23_05,2022-12-22_03,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 phishscore=0 mlxlogscore=854 bulkscore=0 malwarescore=0 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2212230091 X-Proofpoint-ORIG-GUID: n19ZFPvmmALpe1z1tok4iRngaQ-nbHba X-Proofpoint-GUID: n19ZFPvmmALpe1z1tok4iRngaQ-nbHba 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: > Alexander Monakov via Gcc-patches writes: >> On Thu, 22 Dec 2022, Jose E. Marchesi via Gcc-patches wrote: >> >>> The first instruction scheduler pass reorders instructions in the TRY >>> block in a way `b=true' gets executed before the call to the function >>> `f'. This optimization is wrong, because `main' calls setjmp and `f' >>> is known to call longjmp. >>> >>> As discussed in BZ 57067, the root cause for this is the fact that >>> setjmp is not properly modeled in RTL, and therefore the backend >>> passes have no normalized way to handle this situation. >>> >>> As Alexander Monakov noted in the BZ, many RTL passes refuse to touch >>> functions that call setjmp. This includes for example gcse, >>> store_motion and cprop. This patch adds the sched1 pass to that list. >>> >>> Note that the other instruction scheduling passes are still allowed to >>> run on these functions, since they reorder instructions within basic >>> blocks, and therefore they cannot cross function calls. >>> >>> This doesn't fix the fundamental issue, but at least assures that >>> sched1 wont perform invalid transformation in correct C programs. >> >> I think scheduling across calls in the pre-RA scheduler is simply an oversight, >> we do not look at dataflow information and with 50% chance risk extending >> lifetime of a pseudoregister across a call, causing higher register pressure at >> the point of the call, and potentially an extra spill. >> >> Therefore I would suggest to indeed solve the root cause, with (untested): >> >> diff --git a/gcc/sched-deps.cc b/gcc/sched-deps.cc >> index 948aa0c3b..343fe2bfa 100644 >> --- a/gcc/sched-deps.cc >> +++ b/gcc/sched-deps.cc >> @@ -3688,7 +3688,13 @@ 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) >> + { >> + /* Do not schedule across calls, this is prone to extending lifetime >> + of a pseudo and causing extra spill later on. */ >> + 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. */ > > +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.