From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from CO1PR02CU001-vft-obe.outbound.protection.outlook.com (mail-westus2azon11021025.outbound.protection.outlook.com [52.101.47.25]) by sourceware.org (Postfix) with ESMTPS id 96434382CE17 for ; Wed, 7 Dec 2022 01:25:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 96434382CE17 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LHaEAK57rxh5wDDtf70VOUdofXgRvfneBbsvyYTRSirtLbnhnWo04D73L2/cWLbPFg4bIDCtjLsxmnManB643V6CprWuwp6vJkh9c1bDuVSi7NBDyAfLo4puajr76OobbQrCS7qtTXGWInZ/+tGEA3S2Lz2aeuCxPPJk1AA9cTtohaOTmVTxMXkKFKHibRpvGrlzvlxz/Ik+qJvS6ka9a8AZzzy2iRgNOukIUDzuTx1ONvhtDZ/gHOgV7C6HQiWylDcjfWjefrygDInzPt+2WoSFGWia+qu77JPJUWwiJAo1P43BRzAcUcClEk397jgvwyjiqoz5VHFckYeugJvS9A== 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=n7k55XkYfQO62s8pVWApYWMlikI4e4JRm6NkLGkP5AY=; b=aBzH25/2tescuVWIabaPFDrwKWm28PiMEdduKAM6rDBq33XHMVqoQC/CfyC+yanaBwitlVuWuoNaCtK46rc/ok7K/7xV5k0V/fTEhMsfQsZK12xaxV67JpZgd2RP026TgLScEvInSNtRbBrfM++E58QbMr1Si5cdUTtxammim+Y7zspdNw6mUQzn0lMgjGw41J9H7J+NeEu07SRpx9ClE5sO4QEXEPNHfYp/AI8rCaexjYxCq9vYCoszfb6yJBx3745G0NBNAOl471f4REQXtV61EQvvPTsqvoQdPm6M141N7+3VrAbYiqe7cvSwrjSFElNRvem3RPWc1zjzgTU7oQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=n7k55XkYfQO62s8pVWApYWMlikI4e4JRm6NkLGkP5AY=; b=IfuPUBPRLjfFeVag8eo9K5ddRbUpA1UXuJG+LNgOrBq87kTzUQTaFanZLLBhuwANnydSGgmEWCTFJ4WDj1GOheR6mEqL1HeLjSQA8/LmZ0X4OY9cyTXOC216JFwoU+m+ZrwHqpdHuZpCKY4uRINzBJZcyZVbgcvA/lVzaqHYbEk= Received: from CY5PR21MB3542.namprd21.prod.outlook.com (2603:10b6:930:d::7) by CH2PR21MB1383.namprd21.prod.outlook.com (2603:10b6:610:8f::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.4; Wed, 7 Dec 2022 01:25:51 +0000 Received: from CY5PR21MB3542.namprd21.prod.outlook.com ([fe80::cd48:318d:7bc8:110f]) by CY5PR21MB3542.namprd21.prod.outlook.com ([fe80::cd48:318d:7bc8:110f%3]) with mapi id 15.20.5924.003; Wed, 7 Dec 2022 01:25:51 +0000 From: Eugene Rozenfeld To: Jeff Law , "gcc-patches@gcc.gnu.org" Subject: RE: [EXTERNAL] Re: [PATCH] Fix count comparison in ipa-cp Thread-Topic: [EXTERNAL] Re: [PATCH] Fix count comparison in ipa-cp Thread-Index: Adj977+4lrH/pqzaQMeRuTKSv2BwngAvaRmAAssol+A= Date: Wed, 7 Dec 2022 01:25:50 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=7442aa41-d0b9-4779-8c99-3cb69e4e36a5;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-12-07T01:20:00Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR21MB3542:EE_|CH2PR21MB1383:EE_ x-ms-office365-filtering-correlation-id: 182a61a8-6e9a-4ee6-5605-08dad7f1fa20 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3qXdNfHjLNvC8t2VtjLcxvl6p6krtLwEkwpnguBDLRr6qrIDGSnuLO5Dw0q0yXy195Q0akOuF5RbMwX+FzGaiMSwHzD78BzgoTofin/rXOqvca3XS/Cdii5G3KnQCSDF6QtE+0nrl1tKzLONeT8nFbaVrbJubs7emvaFjZbirao4LrrHYIzaXtaI2Ymj4WoR47yXbpQZea40K53d5nzyyy77fV9JcCQCeeAE+y0VGHVIrCUDdPOnPS8e7VrlsdNLVvbI8go9oRWdKzIzjvGV6pAfsxI+tp3UGZf/lCibCFZpJAqMkM2M0W6vzaaBlBKGkBmGl4uJKyFiqXJ2uQ/hJVC+ZQaReTK1gxZ8D+BPZGZs1P4EZbFm5Bp8svqHNdT3a6uujhalYIPXPzUTvXTg5jD0oKutAybyBsT+lzj7FHcJ4cGpt+TdVWTpdnYgUiJfbJwbVFS1XLYezY0H+VajwncXoVP6R/sUWypzWbimZfiYrvjh/As5KuN65UtF84s6qIjFLEryxxZS8oPiBoGktlXD6cd1MRPy/OwFhbOv0YnQoYPXPMBgWsGTwDb8/bC+Bq1h4neQhhNyxqjyhSzPrgeOP3RX0MSp/lbjkvcAJ8nNgXGTcwReOyZhn2OjPwbh+5Xq2r3lKIs0eE2L4Sahw2shScYjpZ4insF+DwK/wOyYnoC2a73jZCMB7v1lR96WNWV0WjG9+b0U2BBHlmV12bpnfB5sWPbAw6cFuu7xp21PI99SDSPIVDrAmVaBQaRP5VByEs2ESZiKcddzAOP4qQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR21MB3542.namprd21.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(366004)(376002)(136003)(396003)(39860400002)(451199015)(84970400001)(7696005)(966005)(86362001)(6506007)(8990500004)(53546011)(478600001)(10290500003)(33656002)(55016003)(71200400001)(38070700005)(38100700002)(82950400001)(82960400001)(83380400001)(122000001)(186003)(5660300002)(9686003)(41300700001)(52536014)(8936002)(66476007)(316002)(66946007)(66556008)(76116006)(64756008)(2906002)(8676002)(110136005)(66446008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?O6cfXUbeXc0k0bmn5rlU5BzTAGH8sAP5nrM7rR6gc4hknYNULIxWgPEdlVJg?= =?us-ascii?Q?/1NDeQBrKE4Ai4tJZ1rqUoY/p3mp76pwi9ONDEsElTenAYuv1NlKS03n8Iap?= =?us-ascii?Q?HHJOPpjWXmOZjgC9leM4YekRrnQ2lrhd7LAVEfCIoMU2z7zL6LYMN8CVXSud?= =?us-ascii?Q?v4KycZEVvhL78fEMosgoe0JH+lh7DnKnr3xCRSA78A5gkuiUA1Tr8kMm7GpN?= =?us-ascii?Q?lA1RC9zVw4wC567nad5gBtW4yDESpNmqp28/g7hzJ3/13ZkooLIo8XVRrfAt?= =?us-ascii?Q?Za2mWVXaRTdjx7KYQiPi/G/vmuvL6CeMztRWVW+ZxT7m0HgDeLUu1QJugkmU?= =?us-ascii?Q?wriZ6GmKEvmhDR6aTL99ub6hxiUL/oasqNSKmal+k/g8z6U9l4RQvcQlMMwN?= =?us-ascii?Q?bKJuD9hQU4o7ECmyGzeee5m9GTk3Nw1semf6AHuL4dyHXE6cQarPCQbql/xr?= =?us-ascii?Q?Qn/eAoZMpBND83cErUOAjCcmWmu7eBx8bWkCWiEK6FFU6mNbR9t6HPsga0AC?= =?us-ascii?Q?g/PuT+fBAbSGaI1iSugCkvrjGXWP4LGmOJ+MDn5/nIjsLu5IEQJuK7zkeZ5i?= =?us-ascii?Q?CKQLxItb7DIEgWnIA6EdR42FlH5ydNHKTCOnCH7FgEYtKfxiG/3QXWVeLrXT?= =?us-ascii?Q?nCdzIh5dkxuBPe+32BtW7vD5WcsOAwWB+jtGTJYtxd9xME2IAtqN5AlgLyZ2?= =?us-ascii?Q?SbRtW6s3SkltTpTJAR98a1sIky5drgISh5yjTUfS8BKxnUtsa8mfnwhH34EH?= =?us-ascii?Q?VyXrT5ij0MwMlJTSyv3BOQaC2mxfF7mwZog6tn07FDRzpBro/+fYqrMF8yg7?= =?us-ascii?Q?IyNgGsrND1Ykn+vKHQKJeUe6ALpJHKTZePI2Zv1JNk7sBEOQsH2hXhbu6AqP?= =?us-ascii?Q?qBXVTftFttS2kws+/IUKMizq+gZkZmJQ5jnMMYkGRcz7LZtD5mSWfkQ97Hce?= =?us-ascii?Q?umPJzi4g+dB2IL0cLqqoEGzEscJ/6wlwuw2UcCl0/PVTGnkum8d17iSttR+H?= =?us-ascii?Q?K+Dq0y9sDh9Cyvq/BaZbybE8YB/4qhz4AMp8m3DzRe3N/qfmrP0CWU2Cz5fY?= =?us-ascii?Q?nGsrbouDH5DFQC+4RoAKyFzcBpixC1X4d1z2NENIpdEkvXJOVb6d8SDUPsF4?= =?us-ascii?Q?4sLeutoRzVBDKepcjTpxwOcw9zuEXYSCWlT/yGwxkEpXqT6BNp34hyvUxMeX?= =?us-ascii?Q?VNex2LNRXNzxXwW8c0WeDjFhrIKmY4iV4Z8y+sGfCzyaSCgbqfAQIQtclzWO?= =?us-ascii?Q?kFGzsjGDSP1M7qHaT/HpOspaCBCTnvbCxlEW7QZpHu6NT39PyISRrdS4rs6o?= =?us-ascii?Q?CP3DJBrPq7V/+FxKPSJPmKVBdPV4J6HRInjXURdQBhIfs9Rl2fDMnsZWhnx1?= =?us-ascii?Q?5VJZAkdtzf3awJYKMlyys3vixEL053pKOQ41A0+CeENXTRpZ6Sq+ulPRBi41?= =?us-ascii?Q?33DdPBSf5cm0OsIz2Lwloh8RPQgrN5pAYq42jVJiD6TfDBGn5q+pnd6Q6Wk8?= =?us-ascii?Q?0Ka46zi7H4ZFovIRzC8BUGlhKs8OURi3PY1YeYpuXYL+RcXtchw80ZGnjgYU?= =?us-ascii?Q?6kKlDYnqj2GgiMmqYXyS8QRSlpn2jU2gbFuvpFXFhSL2cGXAIeHAu5vtPRCu?= =?us-ascii?Q?bzzOcqQLKBgJaQK9DDKocMb4uWLo+Ih0H6aMIw4L835E?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY5PR21MB3542.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 182a61a8-6e9a-4ee6-5605-08dad7f1fa20 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2022 01:25:50.9704 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: rY52wl2ntWgntr6MWPbsjebXmY8fhyI0rgs1BAXDde7GrznlXwpSsMZaGHcgLQW9024QzQwmKT1pKm7EBTjsNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR21MB1383 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,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: I initially ran into this while reviving autoprofiledbootstrap build. I was able to create a simple reliable test for this bug and captured it in= https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D108000 I also included the test case in the updated patch below. Eugene =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D The existing comparison was incorrect for non-PRECISE counts (e.g., AFDO): we could end up with a 0 base_count, which could lead to asserts, e.g., in good_cloning_opportunity_p. Tested on x86_64-pc-linux-gnu. gcc/ChangeLog: PR ipa/108000 * ipa-cp.cc (ipcp_propagate_stage): Fix profile count comparison gcc/testsuite * gcc.dg/tree-prof/pr108000.c: Regression test --- gcc/ipa-cp.cc | 2 +- gcc/testsuite/gcc.dg/tree-prof/pr108000.c | 93 +++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/tree-prof/pr108000.c diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc index d5230c7c5e6..cc031ebed0f 100644 --- a/gcc/ipa-cp.cc +++ b/gcc/ipa-cp.cc @@ -4225,7 +4225,7 @@ ipcp_propagate_stage (class ipa_topo_info *topo) for (cgraph_edge *cs =3D node->callees; cs; cs =3D cs->next_callee) { profile_count count =3D cs->count.ipa (); - if (!(count > profile_count::zero ())) + if (!count.nonzero_p ()) continue; =20 enum availability avail; diff --git a/gcc/testsuite/gcc.dg/tree-prof/pr108000.c b/gcc/testsuite/gcc.= dg/tree-prof/pr108000.c new file mode 100644 index 00000000000..c59ea799748 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/pr108000.c @@ -0,0 +1,93 @@ +/* { dg-options "-O2" } */ + +#include + +volatile int flag; +const int array_size =3D 10; +int* array; +int iterations =3D 10000000; + +#define BAR(num) \ +int __attribute__((noinline)) \ +bar##num (int i, int j) \ +{ \ + if (i =3D=3D 0) \ + return 2*num - 1; \ + else \ + return 2*num; \ +} + +BAR(1) +BAR(2) +BAR(3) +BAR(4) +BAR(5) +BAR(6) +BAR(7) +BAR(8) +BAR(9) +BAR(10) +BAR(11) +BAR(12) +BAR(13) +BAR(14) +BAR(15) +BAR(16) +BAR(17) +BAR(18) +BAR(19) + +int __attribute__((noinline)) +foo () +{ + switch (flag) + { + case 1: + return bar1 (0, 0); + case 2: + return bar2 (0, 0); + case 3: + return bar3 (0, 0); + case 4: + return bar4 (0, 0); + case 5: + return bar5 (0, 0); + case 6: + return bar6 (0, 0); + case 7: + return bar7 (0, 0); + case 8: + return bar8 (0, 0); + case 9: + return bar9 (0, 0); + case 10: + return bar10 (0, 0); + case 11: + return bar11 (0, 0); + case 12: + return bar12 (0, 0); + case 13: + return bar13 (0, 0); + case 14: + return bar14 (0, 0); + case 15: + return bar15 (0, 0); + case 16: + return bar16 (0, 0); + case 17: + return bar17 (0, 0); + case 18: + return bar18 (0, 0); + default: + return bar19(0, 0); + } +} + +int +main () +{ + flag =3D 0; + array =3D calloc(array_size, sizeof(int)); + for (int i =3D 0, j =3D 0; i < iterations; ++i, j =3D (j + 1) % 10) + array[j] =3D foo (); +} --=20 2.25.1 -----Original Message----- From: Jeff Law =20 Sent: Tuesday, November 22, 2022 12:03 PM To: Eugene Rozenfeld ; gcc-patches@gcc.gnu.= org Subject: [EXTERNAL] Re: [PATCH] Fix count comparison in ipa-cp [You don't often get email from jeffreyalaw@gmail.com. Learn why this is im= portant at https://aka.ms/LearnAboutSenderIdentification ] On 11/21/22 14:26, Eugene Rozenfeld via Gcc-patches wrote: > The existing comparison was incorrect for non-PRECISE counts (e.g.,=20 > AFDO): we could end up with a 0 base_count, which could lead to=20 > asserts, e.g., in good_cloning_opportunity_p. > > gcc/ChangeLog: > > * ipa-cp.cc (ipcp_propagate_stage): Fix profile count comparison= . OK. Probably somewhat painful to pull together a reliable test for this, r= ight? Jeff