From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from IND01-MA1-obe.outbound.protection.outlook.com (mail-ma1ind01olkn0165.outbound.protection.outlook.com [104.47.100.165]) by sourceware.org (Postfix) with ESMTPS id 77A113858D3C for ; Sun, 23 Jan 2022 10:50:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 77A113858D3C ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aGBf+NAYqywNvHCxS4oirSMIXCgffMndmYy1OVtqFf+mBv5jIqVh0exJnsv7arciw/pBKCM2dyXkzBDPQa1h1jqCRUn2UDCLcPVLaNJZLoFJx9KkGhJhKKNyOTjAfMuwuFnDZ40c2LPnHZ3GqEJhMr+EHNhnI3rA2VJ6yIbh5K103NUd78r4gWu6Xs1uM4ETBfriPIJ8EVfzBB61kCt7CL29p2hQKQNUz5JTPQD1bshRXAkYvxb7QvuwS6qdhTlwh/3vaFyT/1jTIzPUI3ZrCDEokiKkachqsgr7vT7Awa7Lyg8GmpXs/hLCtgun1P8qUfZWexSMTVoWACnkNFW5Fw== 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=sxivURbZ+6QHl2cRL8l8lyBwyu31uT3v5KpJiA3YWzY=; b=BqXGecM33GEzCBUB89DoxBmlqM/grDD77yvAWP66qTMBKOHJooL0KqTACHBKfs1jJGlwdvbeqn3SHOB0mIBzse5MM/jhdkCWC6tZOst9IRyTzuFEy+MWIxvepFAf6fJSEMM0aoprPNrB+CHiKq5o9svwDlu+yMXm6f+2teHPPB6XJKIZT9Px41YPcrE/oqJamBNKJiuQ2Xp6bE1d8HN4W52DKxHeAZ9TJyk7oPtJEExlse1xR65b5ReO8lvUq7/R9CVzTqWH/+Q4lIHc/ugWCwiUDimHE8gU1e+bTLfHaU4vn9Mof6ey+Lxw9Wbyv2Qj6cbRqMFNwWFZBuA1dzhmOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from MA1PR0101MB1559.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:2d::13) by PNZPR01MB5053.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:3b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4909.8; Sun, 23 Jan 2022 10:50:10 +0000 Received: from MA1PR0101MB1559.INDPRD01.PROD.OUTLOOK.COM ([fe80::10ef:c976:293:fbb7]) by MA1PR0101MB1559.INDPRD01.PROD.OUTLOOK.COM ([fe80::10ef:c976:293:fbb7%10]) with mapi id 15.20.4909.017; Sun, 23 Jan 2022 10:50:10 +0000 From: Vishal Subramanyam To: Xi Ruoyao CC: "gcc-help@gcc.gnu.org" Subject: Re: Pure/const function not getting executed as the first operand to logical OR ( || ) (C++) Thread-Topic: Pure/const function not getting executed as the first operand to logical OR ( || ) (C++) Thread-Index: AQHYEDFsnpbDIN0L3Em2YYRQSo5zuqxwUjGAgAALf7WAAAKqAIAACm3J Date: Sun, 23 Jan 2022 10:50:10 +0000 Message-ID: References: <7107aa063c391c0c3dd9e1b9641f7e5a5df9aa31.camel@mengyan1223.wang> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: suggested_attachment_session_id: 85c78920-d993-7b5a-8ebb-c217e77a18dc x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [x4/mpDtWum5eDBXqxNJ3syNXmWunQ8L9] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 62928770-f0d6-4885-df9e-08d9de5e209e x-ms-traffictypediagnostic: PNZPR01MB5053:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: GNxr3I35uasrqGUG8YHe0MZeDp6WVRC8jtYduWAgJGia7CtblkZQYaCbtOYWOpUcK1i+SD+hbbtEEqVOsjNef8hslaX+0dxBM3tAAR22qAT9f9UcMsV6hsL3bvKqUch4fzW+AYJCqOQWoI/vSxYUo454qZqon/yHx1eotnCn+z7Hsaj/ivwswEb4yC8A7oBScpqLZDF7wf/Hu9M2mB7UncN45cru8+HwJyNYHAyb7MtPfLp4qcLam9cx8zEH53T9ejqdOO5TaI3pBUTLlcc/NhyWB6VNZPFEoQQ7j3zFA7HJaD61h79CMDMkpevE4paot6GoU3dNGVyyRvdL34uOhkLVfFLqovSULoPiyCsihZURzO/ORM5lF2SHPicoA+FFNK+wmdy5OQeaPfgUveMEo1QyG/kD53Pc5Vuo35/5NawTmAQ9N82G4KbT7bBkzRPx+U3xBw0W2XVqnqVqlGfMGqt/w45OvIIZxG75SqTa57qTYNRZ9+J0RXwibT6JDYSPYPqef4YKo9W4iiYeN62ilHuo5gvqlr5L05hzUp5AEjEzfEyA1KtKOzTrU4wgU2lgNbQfyodqHt1EKzb1A55D/g== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: JBsbrATE8MYEVRA6agj/IrFrVjD0A0aJ+tGk9jI1vOSlWS2BawS43/hoBiHvOjpyg8vA6X2RYmBvEJyc0imaOswntrt6obeOIQwayB3Z4v6PzOvFuD5CpdlmIgEvBFLu74pM8ymCNSBwkF6y0A6+qicOHy9a14XNoq+nWnKJxkqZaMd5DIvYa3UQi+MCCDjPh0kb02yn0TES04VlE7ghUB/ZF2JN30RofRky/vft+FpKKcv9e+bMsgJxgIB2s8KtjT0bgIGo3E/BN6M+iMm879J5YJ3xk2K5wiv74GQZXO2+sjkTq200ANmXF61NSE/gOsFT/TRn+r3ViklPwGovW+9ETUPF6Nz6WoI+EztV3DPu5yTmQnFIazrLvb3CpQMSwvu5noBDKpSKxnWbb9aRuiSRLxEycrIAI4tO8JbZ089wMHGg8wiSEN4Ynr7v2D0Xey4hjj0FdouGf+/+4VRDYtcVzJwmzeo5p/L0UaGZbnrHBDQfrt7KqENOEVzadQfNc45VxrURQiumrZU/u59RHd7BQ5V1B9wQ/x2oevcL0GbhIWZCqALVHND6Q/d0LEcO9hSXzlKCk74Y+Bui39s0ST9eSI8mtZXGVB1OMPouV/6UM7CZe5tkLsipCTY/uGwGCdG9dDihhWuwFlxXF0/SpwFT9NG9zAypzH1hhS3Be9+ragQzomlXf4dZ9FzUYntBk0lWrVDR6NlpxK7jI4csm6copCkod87SXdHivT1uF7AGExlcit+BRmhqTbeWOu2zjFadhPLJHv2igPE9eNUP4VYd0OCD4FMgadz34Pto+4luDHJV1bWNntrmkOngnjv6s6CfyZEkiKrN7KzLTFa39KF5KV9z2aV9SCR0yjiLFIPEJaMbSrpQIKUI0ifF7x5Az/cjRxCcRGS8o9rTu/6c2SnkYfkrOas3+DO1udR9tRUuUEAFJGljBPsDIpCT0ya0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MA1PR0101MB1559.INDPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 62928770-f0d6-4885-df9e-08d9de5e209e X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jan 2022 10:50:10.4273 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PNZPR01MB5053 X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-help@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-help mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Jan 2022 10:50:17 -0000 So I took a look at the x86 assembly with O1 just -fno-inline. So interproc= edural analysis still happens. Now,=0A= is there a specific name for the type of optimization where the compiler si= mply decides to drop the return value.=0A= Is this related to return value optimization (though RVO usually discusses = objects and explicit copy constructors)?=0A= =0A= ________________________________________=0A= From: Xi Ruoyao =0A= Sent: Sunday, January 23, 2022 10:02 AM=0A= To: Vishal Subramanyam=0A= Cc: gcc-help@gcc.gnu.org=0A= Subject: Re: Pure/const function not getting executed as the first operand = to logical OR ( || ) (C++)=0A= =0A= On Sun, 2022-01-23 at 09:56 +0000, Vishal Subramanyam wrote:=0A= > This still doesn't explain why an O1 level optimization can violate=0A= > the standard by not evaluating the first operand.=0A= =0A= It's not violating the standard. The standard says division-by-zero is=0A= an undefined behavior, so the compiler can do anything.=0A= =0A= > What optimization is my code triggering with -fno-inline? My function=0A= > clearly has a return value, so how did the compiler=0A= > decide that the return value doesn't matter?=0A= =0A= --=0A= Xi Ruoyao =0A= School of Aerospace Science and Technology, Xidian University=0A=