From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id CF13938378F5 for ; Thu, 8 Dec 2022 12:58:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CF13938378F5 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 (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B87jC6Y004624; Thu, 8 Dec 2022 12:58:55 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=vOAmzCyR5YeC9g68xF1lbjLvN9fymozBrfMsL0aFYoY=; b=aMmdPCcmO30FRK73yG7roU9PlcXpDESnLjsp2JSYp30uFeTHI0tGPISXTpJFmTsvvaK1 nBbyrfF1vqORL510Qr9jddfuwrsB8Llu1gp75W7cUbTJFU2jnRzjTyLRDHE2RyELUHAL s4bxynoRRcQk6C1vFV+WOsNOursA5SsanGVfssvYM4eeVpiqwrYoU1adBbRxJe+Pl8UF 2stiTn59ly4OWNOT4ZbOgPoBToxm0ayj0YNfDyDT+hBZl9OLjDeLa16tdQRB2cl8eN2z lsa5M2TVhHfFQb3PRbGymFa3N/5ZcQpaWqzobPl316W5yGaWxJ/GP3lW0Xu/ONZaCXL9 kA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3maxeysvu9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 08 Dec 2022 12:58:55 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2B8CDwfV029327; Thu, 8 Dec 2022 12:58:54 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2171.outbound.protection.outlook.com [104.47.56.171]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3maa6arm20-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 08 Dec 2022 12:58:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Thp9JebJC66eOf14RM92iRpwpUKTg+tz9+xSzRHbNj0pyAXcEUkC8e9ngs+WnUtAcTTF2fPItVOIz1u0JjcBr9cyCa+E+L1cIjOq3T6tlDVH8WGkvOXzI7efS63sIPeqA7FfeFw4K17qEaRPNPQr3tZLfxliqahsDf3rN58Yz9VleeifhtKeaxdNuGtdBOAfnQ9lojaChzNnOzi0JRtCIASpSngyzmIOt4H3W2ICGo9hIe6ntEOl6sSyHDSxSegIwQ6d1S03JDEL+DhmUkSwiS0YgZhnGdByAdfvwI7jY2/sCsalQwivWNRxV/tgC5y646wDkXRSIWJsY2Sg7Kbe/Q== 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=vOAmzCyR5YeC9g68xF1lbjLvN9fymozBrfMsL0aFYoY=; b=cFhxVRf4ggqU+ljlFvlFklJFt0kCdBPhLOjN7Ilv9R6/Ms1FX/8YJUQAP5UO9ZEOQtE+qRNaz9czjxSql20v6ZdBVLzTJiu909jvYR4s3yuX6SxiF+qkFwr05KtC7pTvzwmN5CR1N58iWk55TtEqX+ssqEImhG1z/4VResgm00J/b2GRTmy0515Uq6nh7TLTCtVERdhqbz8XyeELVgTZqhRczvwTUG3wTXnmJdPJxx4mtDvM8kPLVG7Tedjmw8/CV9U3R9QHKA+kZOqr6XG/wBQXyJHgtk52DlAUGU1ofXOUKjD1ZW2Z1QuZw1VNLQZh+T6/ZMOicRCJ+xfXnJ+oOA== 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=vOAmzCyR5YeC9g68xF1lbjLvN9fymozBrfMsL0aFYoY=; b=m7yJfww74gzIl8tmcDxf8OK0ffNKW+dO9P9eArCguZwcn+0uDvTrqZvhHKvXalPeCD+30reJ+89mY8iTo1exLHGXJMgjvHaRWhoSgZ6be5rgJ/Tk+XUA5/DN8kjR7y4oSlQxe1UF05HbZWy40bQHweN8KWLclsm5K7CEyolcuM0= Received: from BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) by BLAPR10MB5281.namprd10.prod.outlook.com (2603:10b6:208:30f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.16; Thu, 8 Dec 2022 12:58:52 +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.5880.014; Thu, 8 Dec 2022 12:58:52 +0000 From: "Jose E. Marchesi" To: Jakub Jelinek Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] expr.cc: avoid unexpected side effects in expand_expr_divmod optimization References: <20221208105944.660323-1-jose.marchesi@oracle.com> Date: Thu, 08 Dec 2022 14:02:36 +0100 In-Reply-To: (Jakub Jelinek's message of "Thu, 8 Dec 2022 13:20:40 +0100") Message-ID: <87y1rixd3n.fsf@oracle.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Content-Type: text/plain X-ClientProxiedBy: LO6P123CA0051.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:310::7) To BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR10MB2888:EE_|BLAPR10MB5281:EE_ X-MS-Office365-Filtering-Correlation-Id: aec1bb31-c7f3-4c31-66e2-08dad91bf4d0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TprtFOnB2awRdExBUDYudYjXAgU52VTOYX4vYA8tQGFM0Fnb17+awTyeVrJ48775uvopRnhxHWRMACbRgro7ov0GiAX9zcaD/HIOJ8CjTQ8xPaYDfaDTyA61N6Oqb9RjUFirqqat3fNkV6OicFgpvEYvWEgHpQZRAu6bfiOTZVn3Pqg3xFWyG/q5KaCYnS7R40BCLk8l29x51DzDeF/5zNbP44QJca1TaeRVvMIcpYSGHWBpfb72G7t8Sq8CJpVRByHL85hdO0HtOcyhq/YA7F5rRlWDMnwYWQqi7y+oB7deisPNNKGElnu/8+lESikrinjBjrHSIAxLrLukyQIBB2QOsfNEsK3UvbJCMUfr4+YHVoLF6w/t5WwBL9sC5zBV5Li4llPscfvdDkEWULJOFxAPwUN+4LMxBpqzcYx7eSzHWTGiSXNoOdZLanwwtUjeUgIO4abb2iHRFL+TeUlS+sDFnruLEhK+ipz69upIRybPJjP2xUkC9hGVZbfH13RDx6m8R1nc5GY7D90WkZ3mST9aSk8Z60RbefWge+MOWty4a3/Erp0SYwtZxNUrx9z5bRxlfjb5u0R28eDqQJtLWeu4FyBvtOtyR5Gbs0fHghSWG/O9WBUPzBXYsSHGHDYaEZErTpd+r6wkEOPyvwzFqB7DacWJMkYz7OwSEsYc3ve0F537K/HPs0THGi0Yl7FQF9C0T5rI/SM9WOhx9gXNhQ== 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)(396003)(366004)(346002)(376002)(136003)(39860400002)(451199015)(2616005)(186003)(2906002)(6506007)(36756003)(6666004)(6512007)(6486002)(26005)(478600001)(38100700002)(86362001)(83380400001)(8936002)(4326008)(5660300002)(66556008)(66946007)(66476007)(8676002)(41300700001)(6916009)(316002)(56340200001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZKzeMSzjPxTprxzPdoKIgESSlTGgK6w8qXuoMaJPsy0uAZ3Tu1vbM/XSV1qt?= =?us-ascii?Q?omHTkjXxAFpOYAvXoCZuDKTF2+5+PXKmpb6UBeajYfQ9C6nawF1HFYx0DLFP?= =?us-ascii?Q?r2Wr6aHnkPx/6wY0AU9g9uaM9dh5DrB5jTUqWwjFGh0FFl2Pmi1FrbJY+0oD?= =?us-ascii?Q?4TTi8EXygKozxNezy8lNfFy7tgL7FmPZWeIRYNxL5Ww0pRIjbtf0PbrBm9J/?= =?us-ascii?Q?lDxmirZ0+CqH6khIIW/OzMXa3st8EMrDXGliGavdXWxBWNIGCBvReU6KzOp/?= =?us-ascii?Q?MbSjmL2VMksmJ1A9ue7kGde/kmkM48nhYhnQaeMV2uBB8rttiexnld3M2KEU?= =?us-ascii?Q?vVyEazBe68uaca3sUNvzZkx66rGQukUXlI4XJdz5tamduBPzGJLsUw5fpnLu?= =?us-ascii?Q?1gTXL3sDhEpJNOFWf5E1jWG9C503NIlWvXX14sp8YSB+bOVIpAJbrPNeG1BG?= =?us-ascii?Q?EZxvLJvzLXNZ3kNnNXy0E7JIxA8v0cScin8d/KYtNSONpPzAHZt3Gg5Y5qYV?= =?us-ascii?Q?3Z/+L2bWrVxI9p4VI6BUBvDYAr0AwvH2agpK2A6dsNRvcGylW5boIAdRifTc?= =?us-ascii?Q?a93iEeBF5yXWFhezVnmUVWtokm22ir19wjTPiDerEugqATgq6rTmz/zFqX3i?= =?us-ascii?Q?ElLDecNaWcPH7Pl2IBQtXDCbOiQyuTfVOm5SylTdpx5KnETdV05HNSooqxC4?= =?us-ascii?Q?fbn6arVaL37Ou7johplN1UyxzK4RdpghCLtv+Q4so8z6tjIsfDNCE/vAOzu/?= =?us-ascii?Q?aMwtmhvZQZsT6JQusQe6xpy//rSA5z//bQO3yhVCoY5KQqs3Nm0ZIITdzH5+?= =?us-ascii?Q?cStzUXi7qq01s+XmvohT9lY84bftWTcjPVTyihFgH8Sa44XMkNYSzaTAdvME?= =?us-ascii?Q?eP4YUoiNfPdPpk/VYdSAPoLJC/F0zbRuJ+xYeoewb6hAnDGCmxJNwdvJzUtD?= =?us-ascii?Q?VOoio+L+1QRWTyaLGFhH+PCsq7922gCueFomRvDPeZoLFakDGdL917kJKhGD?= =?us-ascii?Q?bwcDxiyiJU+GSOZgRJ0kjuAhqdMlEtiAh/TUED+gtPT0RlwOxlVdyRJWNTY5?= =?us-ascii?Q?vZ/41b+hJt52FtEJP5kNwnDU0R/9d1rdK8wfGOUhyz2aXTFjX0rB2sVY0AuZ?= =?us-ascii?Q?UG16wxnzfGMLO27z4O/b8cH4u8p155EbKmewAhbgufD2QrHzmXVEnrSTlUHm?= =?us-ascii?Q?gshin4iieZguAzCsn+9qYq/4cIfALcchqXA1ym5qkz5syV19Zcwt5EQXeP6Q?= =?us-ascii?Q?K41o/GIpGQXm3JeZF2FtQ74xONffwxtK1NHgAhvmNe+mr22mHbmavmrui+49?= =?us-ascii?Q?LWnxnfOrwxpOuuo9WOwUa/i+KkpKVVVX307mRrshpNxUSCLpAPr7z0RWvQYm?= =?us-ascii?Q?+KOm/nuoYUVTjnZ6MedTIyX5HGr07zeSAk84UARVQKJ5CljHIE2z+/Ib1LvV?= =?us-ascii?Q?xDNmDg6nG9oiQkiojsFEt2JfJAyHgauUIiFrz42a3esWDYpwnhvnPS8q849v?= =?us-ascii?Q?OjJiltxzWh/F2nqMFZFjAJ0RAGF8Nv1sH9KSiPeMkM9wKxHHJIt+Tx7ON0Hs?= =?us-ascii?Q?D3bdB81qbUW+QfN3Hud8jnBkVe9DxClJ2ZA9zrD/O50GS0mwlTr5n+foIC+L?= =?us-ascii?Q?zg=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: aec1bb31-c7f3-4c31-66e2-08dad91bf4d0 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2888.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Dec 2022 12:58:52.4114 (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: slkGvgCYxYc2GRfcRhtRjhsnrHFaFZWjEljhqU5xpXdniXFIuJ+LnEv27iFohpzY2N/zzA6X+BPV4365BJLboNiJPoOQOGkZLqQCzHudUCY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5281 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-08_07,2022-12-08_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 malwarescore=0 phishscore=0 mlxlogscore=474 spamscore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212080109 X-Proofpoint-GUID: 2VFlFhUBI_63iKWgIcq6sIPzu_gPcEVj X-Proofpoint-ORIG-GUID: 2VFlFhUBI_63iKWgIcq6sIPzu_gPcEVj X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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: Hi Jakub. > On Thu, Dec 08, 2022 at 11:59:44AM +0100, Jose E. Marchesi via Gcc-patches wrote: >> gcc/ChangeLog >> >> * expr.cc (expand_expr_divmod): Avoid side-effects of trying >> sequences involving funcalls in optimization. > > That looks wrong. > The globals for mentioned calls just shouldn't be emitted during expansion, > especially if it is bigger annoyance than just having some extra symbols > in the symbol table. > expand_expr_divmod is definitely not the only place where something is > expanded and later not used, lots of other places in the expander do that, > and more importantly, there are over 80 optimization passes after expansion, > many of them can remove code determined to be dead, and while lots of dead > code is removed in GIMPLE optimizations already, definitely not all. > So, rather than add hacks for this in a single spot, much better is to emit > the globals only for stuff that is actually needed (so during final or > immediately before it). Yeah I see the point. The culprit of the leadked .global seems to be a call to assemble_external_libcall in emit_library_call_value_1: expand_expr_divmod expand_divmod -> This will result in libcall sign_expand_divmod emit_library_call_value emit_library_call_value_1 ... /* If this machine requires an external definition for library functions, write one out. */ assemble_external_libcall (fun); ... The documented purpose of assemble_external_libcall is, as stated in output.h, to "Assemble a string constant". So, it seems to me that emit_library_call_value should not assemble anything, since it is used by expand functions whose expansions may be eventually discarded. However, simply removing that call to assemble_external_libcall makes .global declarations to not be emitted even when the funcall is actually emitted in final: For: int foo(unsigned int len) { return ((long)len) * 234 / 5; } we get: .file "foo.c" .text <------------- NO .global __divdi3 .align 3 .global foo .type foo, @function foo: mov32 %r1,%r1 mov %r2,5 mul %r1,234 call __divdi3 exit .size foo, .-foo .ident "GCC: (GNU) 13.0.0 20221207 (experimental)" Note that BPF lacks signed division instructions. So, I guess the right fix would be to call assemble_external_libcall during final? The `.global FOO' directive would be generated immediately before the call sequence, but I guess that would be ok. WDYT?