Message ID | CY5PR21MB35427E6C2EE445568BFA6BA4910A9@CY5PR21MB3542.namprd21.prod.outlook.com |
---|---|
State | New |
Headers |
Return-Path: <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> 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 55642385220F for <patchwork@sourceware.org>; Mon, 21 Nov 2022 21:28:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 55642385220F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1669066095; bh=CFN+KwwlgGqpzXxi8t7hj/b3701I7M9oFhIrupani8s=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=xSLhXkWs9T0fou9esM+V2uzWoLKtRowNfTr+RAEqxPP4LimGVbA9vz2595FNTHouT UYipq+905xzFFG1PnBZHW/S9SWjdLMSqE7OyxSvXeXskMmdgWDsGR9+yq/l+CFPInq 1hE8qFI6QOutffJ9DD5B3unMDcDAYmWvQXsDop+4= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from na01-obe.outbound.protection.outlook.com (mail-westus2azon11021017.outbound.protection.outlook.com [52.101.47.17]) by sourceware.org (Postfix) with ESMTPS id 8385F384F031 for <gcc-patches@gcc.gnu.org>; Mon, 21 Nov 2022 21:26:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8385F384F031 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HxGBp2zrDryfjZRAZCibanuNxX37IhA2rjmMXb/hnqn7dpqSDugnWQrnPCPamHFzt7feRY45E83y/xiS7Zm07bOLItQx8JDyxioQxfJawhjjvNFO21oV7Et6uGdF9BsjFnxp9+H8/O45QhIh4RSUnkI6AnS+PC5VUruBgC1dv6sjIYPmJRaRtzscxTc3xaWofLSC5bNSlNmQgpe+YfeD8UKSjQATMG6uOz9/OixFb2CLgDYJq1ZYhJEA8BQeLSUvlsLP9qwb2qmaymDEne4quxnQghSAo73WOT7oSWHpBQvnPCY7uJV52zt3Y99NIAe+kTtjlFTWlQFAavZZWxT9lg== 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=CFN+KwwlgGqpzXxi8t7hj/b3701I7M9oFhIrupani8s=; b=O7rfi4hoM9Bnl+AoXzP2YbQQwTDhvY7/2fGrY+9oaRSeuzQZzfp9FlNb39zfE+BpdWatqp+fGw6s8YDzzh9r1+/gObrftCpXipSjd534cqukAhxiPF+G4BCq17jUsvHbd3bQGavmeJNjO5phFVjbUFFiid8TQXK30eP748qtKip1Sk10L6LDQnTjEqLkI+aGoqEBBr2YWCP6jjTzG0TIPjD+c89f/BIdNQf9Hu49b5pW/2iNXBNLsco108YNeneEDDpJ9wtuUpF0ydkHOaxNQKT+3piO2ss0sYeZn9Ir8ORZSDhi6DRpo05RppXghT8ohi2CQ1k3/RDBl+GJfN1B4Q== 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 Received: from CY5PR21MB3542.namprd21.prod.outlook.com (2603:10b6:930:d::7) by CY5PR21MB3661.namprd21.prod.outlook.com (2603:10b6:930:d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.1; Mon, 21 Nov 2022 21:26:50 +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.5880.001; Mon, 21 Nov 2022 21:26:50 +0000 To: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org> Subject: [PATCH] Fix count comparison in ipa-cp Thread-Topic: [PATCH] Fix count comparison in ipa-cp Thread-Index: Adj977+4lrH/pqzaQMeRuTKSv2Bwng== Date: Mon, 21 Nov 2022 21:26:49 +0000 Message-ID: <CY5PR21MB35427E6C2EE445568BFA6BA4910A9@CY5PR21MB3542.namprd21.prod.outlook.com> 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=2aec19c8-3ac3-49cf-b169-fe0661b4631b; 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-11-21T21:24:27Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR21MB3542:EE_|CY5PR21MB3661:EE_ x-ms-office365-filtering-correlation-id: 2e8d2185-1f7b-4e1d-341e-08dacc071a04 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BaZh4hP20iABc6J6UgA6KwfuVqrJ7PDUzteT1kUSq68m8CsE1OKszpQigoRAdIQ754VB7m1cCGlmHRYov0Coc7eBklkp+pIyzPBINcx7AwPER/rL48xkXxqfTtPRDSZs0rQ40TQM/MD+jm7IPsb4dxIjzcIiieA2QH9DVHONhYHES125z7T/b9nWre0ZZ+7Is78XKBV7/HTZrZZghGTYzm0AInb53ihhXXIM62QCdGFkPb4ZayK+7xFdv7k62DIdp3r1OpX2snBfrHrfTktofRr432bPeRBauJ9H4bdFpxsSqiAXHKoRZBAGQ2mmdVQre763R2K0nlpnIYeuvyryIuvnAclDN06eGilZVynqCke4x2QiknEENMNXrpKlqtuKtR5HmtDjq3gxDkOLjnwnbLhfbeApdXR2ggBr9/jQMeWOSeAkwhvHEnuxIHvdIdnY48fJsbhUvZrO92gv4XFJGJMu05zcCohGchhP0dxl1mNcRcyBH2TJGC3zWvvW17Y1TbNfMzlIaf47Ja5ZNKLGURNEbs0kr2f5V4zAzoH+wr0qEQq5Y84tRN6+jSnMHpIhffIiryvMXT7aaOzBixMTQ2xDobTQMH/MWUPX+TD9YbHXZL6bUvDPujydiwBEDg7jFt2k3mvfw/KK5zi0ujEGbW+wCw400/8EmHf9xcqC+Fuvni+qHGeWrN3eYj6+25iB3/YiOZlU1AVFvqTr+bsedvlI2eecVZqKTxL9Wppf+NCbU7nFM2DYi2NvMnz7yCys 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)(396003)(366004)(39860400002)(136003)(346002)(376002)(451199015)(76116006)(66946007)(66556008)(66476007)(66446008)(64756008)(8676002)(86362001)(8936002)(4744005)(33656002)(41300700001)(52536014)(5660300002)(2906002)(82960400001)(55016003)(82950400001)(83380400001)(122000001)(38100700002)(186003)(478600001)(10290500003)(6916009)(316002)(38070700005)(71200400001)(7696005)(9686003)(6506007)(8990500004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 5SNt9gmCj7jGne40HtGqmBx/qtS/lAiB3XhZwt1R6M99EDhtAEWPl0Ni7Zem5t/3KwV+wZE1PN/hfmoSYuYjIozMY4STzBZCHmvaPRqrodRXeR8n+QOFiiPIYrPnbkNK/ikkiyFpQFRinSq1t+NFPDWILWtwq2oghYhT9CcfuH9XzaL6D/Ex1f/tEf0wZMpj3t5VcV9o0qSmIm+8evOVI447poNeLpz839+sm/NUJvvnwEJ/Jqh2J5n7/we4A8/H9gVvOsGiXvs+3Bs17e3/nTFU3jHP+ndvYLpCCFfa7sBMFk37vAFSb25EIttvHGDW5jTtolr8QW0wT+2/DRGFlMZ9OJzv2ux59XX+MbMbDZbj+V0DkVeDIfdKKi5gqzbGzYIeHJxXlTajgDocgl4fJUOn/bDjVSN+DydiJNunLcf5av0cpXkWnBE5v9fRtqrIMOFGfabveTWdZm+wFP17IqoYA5xsAQoLr+SVe1lCyVnz0riRfrX4PKwjiJmIxBjlCHyE6x3aVl5uPWrqVTDvzRme493C0ahaWIBi1yJc4JKGvH52s5yULx4lSTrGL9688bMCfIMKidsLet57r06ev7f8TN8ALdR3aibGi1ni6SUwN3aSv8W2Go6rkcojfraudYlRTx/Gum6inmH+fR2RKIBgYQZ2nP69pKd51uYeGHC7ZyQvRWLnMzZu0zLIZ/Ez723Apy0m6xbL9v61iwr3lA8OPQUyylIf+JqsEaQFt8qE5CPDFL2z5BgpEjYj2tjTra10Ufg6kDbdVWdLMauAOou/ONmAnCqtsaYnVwNsf4Xxee7JOiuiukiJmjCG0YANJwUbuzhlSsXegtXetD+PvOtE9lw1JOuYQhBsWgEmPaZdcdSUZuTpRaXnz4nUjoAFoTYzXK1tQZUcEa5CX1lImKdK3PS9sniJaLJC7no5NtZv1au0mGbzAQVm0e10WIVtXbz0sEeSDkH3FM8VInU0bS/tKmX3w63hjF/3Catvl9lVrlF13sbixhVJIAyyj1aP+T5E2yxOEHesmdxsY3t+s1ruRKcyVPeZwxybXUu1k/gDMDKIQKCsZ8uVemA7V4sCpZa8z+te+3tvqLPJc6KuwVq4RPQQXSywQukCTt79mZ2tWJi26nQXt0LeDAXwxpeG3eFM47xu5/F5xVbeSp++dssoGMbbF9Kr+4rA/QLr474UXaSRTJfalMB9/L4D8E5ekQE/FJ9VBPA54tpIShF3BDARCo5YmSPWeud1AurOxaaaqnN9XLzRHAIhf1UVaUKuG8vMb3JiimjBWObpR2oOjA3vR4JFc8VFgk6hYAFqJL8JOEkjRqG+3BIhDn1gFySZS1rnkMBxxYt87wB71KKcJyRhMODXazSuWarrbcYIaX2dgyaWE0+Eb55PgtKGrYRMGISvJIb5QjYFGDcnD5reWSNA98517qI2sYFv62cnrNX/8XGY8RiRdmIxZ6nkCinXblx44K+Ez+A9at/kXtljNzZhIA/2lFRAmS3mQfgiym8YY+jnXXbwx2m2NxKcX9u+zkcSL0h0JI5sNdxbaD3OP5AJiPcK7L/IPRdEsnXMd7rW82qR9dYISnI8B1nZpAAEeRGhWW+s1+Llsz6emr0LBViUgSdxGxND2/t41AoaHV8KkNZXtwnWbYNEedKbQmaY 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: 2e8d2185-1f7b-4e1d-341e-08dacc071a04 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Nov 2022 21:26:49.9198 (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: vGqW7ZI9fa8RP104IafwSMctM9BNrpsVMMjTIe8YMhZuhsTsbt7eKxyF2J4ZQsAwA2o4XVbZWtYDjFiq/nX60w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR21MB3661 X-Spam-Status: No, score=-10.0 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, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> From: Eugene Rozenfeld via Gcc-patches <gcc-patches@gcc.gnu.org> Reply-To: Eugene Rozenfeld <Eugene.Rozenfeld@microsoft.com> Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> |
Series |
Fix count comparison in ipa-cp
|
|
Commit Message
Eugene Rozenfeld
Nov. 21, 2022, 9:26 p.m. UTC
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. gcc/ChangeLog: * ipa-cp.cc (ipcp_propagate_stage): Fix profile count comparison. --- gcc/ipa-cp.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On 11/21/22 14:26, Eugene Rozenfeld via Gcc-patches wrote: > 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. > > gcc/ChangeLog: > > * ipa-cp.cc (ipcp_propagate_stage): Fix profile count comparison. OK. Probably somewhat painful to pull together a reliable test for this, right? Jeff
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=108000 I also included the test case in the updated patch below. Eugene ================================= 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 = node->callees; cs; cs = cs->next_callee) { profile_count count = cs->count.ipa (); - if (!(count > profile_count::zero ())) + if (!count.nonzero_p ()) continue; 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 <stdlib.h> + +volatile int flag; +const int array_size = 10; +int* array; +int iterations = 10000000; + +#define BAR(num) \ +int __attribute__((noinline)) \ +bar##num (int i, int j) \ +{ \ + if (i == 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 = 0; + array = calloc(array_size, sizeof(int)); + for (int i = 0, j = 0; i < iterations; ++i, j = (j + 1) % 10) + array[j] = foo (); +}
diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc index d2bcd5e5e69..9df8b456759 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 = node->callees; cs; cs = cs->next_callee) { profile_count count = cs->count.ipa (); - if (!(count > profile_count::zero ())) + if (!count.nonzero_p ()) continue; enum availability avail;