From patchwork Tue Nov 16 15:35:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 47771 Return-Path: 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 86235385AC1F for ; Tue, 16 Nov 2021 15:36:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 86235385AC1F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1637077005; bh=8+jSVkmmSLXNZXFv/XHp6q/WD9lHT+ZwBKhZGrW5Nso=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=NY6Vpxb6UhxKWZ3cahh9maKBXUJ/r2vtxGjoFaUHILTy1d++xNLRU2zXV76VHWVLr n3ODFUJhJMlhnmmH91IsR0Bop0TEcQaBa3B4xW7H3HwrXabAJUcPvc9KBSuISVyz5u Ru4xqQteHd8UZIW6hWVZma5Q9NbzT8Bvek68r6sk= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130042.outbound.protection.outlook.com [40.107.13.42]) by sourceware.org (Postfix) with ESMTPS id 66C7A385B833 for ; Tue, 16 Nov 2021 15:35:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 66C7A385B833 Received: from AM6P192CA0053.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:82::30) by DB9PR08MB6826.eurprd08.prod.outlook.com (2603:10a6:10:2ac::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4713.19; Tue, 16 Nov 2021 15:35:35 +0000 Received: from AM5EUR03FT043.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:82:cafe::d2) by AM6P192CA0053.outlook.office365.com (2603:10a6:209:82::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.25 via Frontend Transport; Tue, 16 Nov 2021 15:35:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT043.mail.protection.outlook.com (10.152.17.43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.20 via Frontend Transport; Tue, 16 Nov 2021 15:35:34 +0000 Received: ("Tessian outbound 1cd1a01725a6:v110"); Tue, 16 Nov 2021 15:35:34 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 2a30099cc438277c X-CR-MTA-TID: 64aa7808 Received: from 4252efcfc339.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 769A2C3E-73B2-40A0-87DC-8FBC8901A2A6.1; Tue, 16 Nov 2021 15:35:19 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4252efcfc339.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 16 Nov 2021 15:35:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QPVQgXaSyrquLZn4lnivQaDbNSiRTO9CXTVEpJfKyRZZaPU4eQlArIblJ6zrkx1pZiO9PSLYQu/+FQDpmRBzCmQOCentb92qBsghYFvtHzIp4kAnPulko1wpt8t+E+rmFTiQ4iN+9MabaNJuHt29DzoUC6t56EMMP+BL5Qa8+vJO2yae6J7kF2tsViWgXkHU/SZNb42BIbQovh1G1LbD5JLdAbnm7wZF7UhtUQiIXBKjeiAoUEqwIsAatzvvV+oPgZ/0qbt0NtdldR/vJvmj6jhfQTegE578C1CtTeqykNk3ZjG4uGgTzL0YhMFhtDgona+9/2W8iTXCvrK6WhcniA== 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=8+jSVkmmSLXNZXFv/XHp6q/WD9lHT+ZwBKhZGrW5Nso=; b=ni9GpRtvm4n9GBsIb7Zpqx74zM/3z4FCrnzRLy589UE5BWluU0HvFzlAoxPkkEkLclMF8vGDNDH2/TZBzns06t5HpfZBv35P/bHNiDSqXPm12qJ/WoCktNFGPK567Pxcmqsq8lRUcJ1EERAgh8mrA3hzA2A+DbLvfAoAk4ZJ5CPjEKaQYDLyvF07US7Nlzxo87ZLgh58Rr7req32li5ipEgx8Na+/+q5DuShhuwxPw2usRLuc0U9tkqpGPBmzbC+nn1snOHSRBDfnIjfoREuarbsk4vaa9wOEVaSaENU8YJS+HNOOirtRTHftPXzUqymZF79MCzw4ITtICpJSvaBPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR08MB3055.eurprd08.prod.outlook.com (2603:10a6:803:4e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.26; Tue, 16 Nov 2021 15:35:17 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::4ec:31a:1083:adfd]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::4ec:31a:1083:adfd%5]) with mapi id 15.20.4690.027; Tue, 16 Nov 2021 15:35:17 +0000 Date: Tue, 16 Nov 2021 15:35:14 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH]middle-end: Fix FMA detection when inspecting gimple which have no LHS. Message-ID: Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: LO4P265CA0046.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ac::20) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 Received: from arm.com (217.140.106.55) by LO4P265CA0046.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ac::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.25 via Frontend Transport; Tue, 16 Nov 2021 15:35:17 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1f6df9ff-159f-47dc-ae9f-08d9a916bb7f X-MS-TrafficTypeDiagnostic: VI1PR08MB3055:|DB9PR08MB6826: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:9508;OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: A+W2O/b9CUOOb40pYIu6lhUL2sEcFAp8fitma22M/NdBKFmqZA1z/vhgadQacdmYQGqUNjpnmE8a1hiJaS18y4BB3CaFD0YPICrpRKYjrCBNy9PppxtkT9USCZsZ6/DXeh8xR/e1AlZ7613EK6b26DGCy4Tg6mw8q+pkCLBS2/QpblX0QktmK0P40btP/LbFKa1iH1E9M2lWsDA+9fFbRhXDi5bUp0N7RO+QtsLa++cuOJVaEK0dFf03/SBkX7RocONlOaqed6AwtfbFAGeQOm07NFpL6j1NDHZUglsmUjDctlrnm2O7qDgUXx/ieIXaPCvhvA6vcwKHmQQyD/CpeEFsJpD5nxdzz+a47CJDZZy5qQlfcFICuat9/p784M9CPGsyxv/83KYM1mNhA5HppkAdFvQNG1RBdizLm0OPf+rdPY1bmNg7yNklgtQCyqjPtrjhB97Gseir2DqBU6EsU/URLGhfLXHN4UiiEecQqAnVWdpAOda+OPmCYMtr5UVF83sIG4b2tgf941Nzp0TeukVLrOeg0Xi8kZpGJ26VdPQjj2OqPeQ8PpksM3wcvHdPGnjl1nzClVcnUi/3Pxa0fulqxRYFgyzVE5hfWSF8rKo8RyPOXDU9laOcstdXM/0RAkEzkgbCKvxtAKeL6g6O/kjoBjCpkdUY2fDkXKk3MLuHPFASm9G8Buuu2+94DfPCNDmUDqaG7lW5lV918RI4wfISWYDlCTQ/BnmJ3hO9I228HnkzvfEuTUpv/hSs35hugPtP3pruXo6WyFg5rQ3t69cqwLP5fnPSLMhOQ/keffuacp8nYjn+cxgTdZBDn1uzXgtZSi3832CBoz7Gsd5sQXWKDaF4QqO3/yzgNO0RdDv+RmYcXWatKKWwTbamncFd X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(316002)(8936002)(8676002)(26005)(235185007)(8886007)(6666004)(186003)(6916009)(38350700002)(38100700002)(36756003)(4743002)(44832011)(5660300002)(2906002)(86362001)(55016002)(2616005)(956004)(66556008)(66476007)(508600001)(52116002)(83380400001)(66946007)(44144004)(7696005)(33964004)(4326008)(4216001)(2700100001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3055 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: f8bd58b8-60a0-47a5-e895-08d9a916b0f3 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3JkCOoULMAmKAjkt9OlVtNMEvxKJH/j6tD5g58FX1nqEbGUbwaFj119/dmbFwo/JqAT/WQ6uacIyDJvAftrggwz/sjMEBSgGPWQnoZkFhzBpUcK9oEgjS8hepE+txkWKztOQUo+Rbz6aSoYmsdWFrD+LGJgG3T/ZX/mucJH7T1WLq1IL+t22KWmsMZS5VeCYQATcQz2oiYXaWuC9Ez+rcFGREU3Hz1BxHWtnvG0VkSbyvWvm3FDrn23K/BkX1WriRVgF/Tl3YcG5qgWtptxKjqIn5Qfe8cYZNsNGTfs4EXVXO1o84P8vqKil4IE9qAIeuQDGOSRTxGdWzj2SsOfcENndz+Pmdz05KSrvpklG3TpZqrXKoJyoOerolkwb9NVtPZoRS+mch3Sx7KzmR3DVbPGa7BR3OksrYrHia4vaIbCWim4MHQq/40lPYoei3aowEwqUdacyohrq2k/GhH4T1d80mrg1icIc2lM9W+HNEmcele/AJDaw9vW3KB70As4LP/h3vewa65LmQmpYR4khimSwt9lqOsDkyF9018GPhgKDdXbZ96xo2O1yY93Mwi6lf4xI4Lb6lRN7ZAvsDWFVej8I2E53wW+WAruouTTId/njIW/UBKCtaYwu2qeUx3jrNOttvb9QY6aoieIFP4rwiQNx3+qyF2KSY/eYnQCZ1wYDnQ0mWv1sDjlqFUNOcQfX2UFyd3u5OSa9CaQ7ENNfug1rjGGXqqa5ln0Fgx65Tungs33HC3UfYOaLZGNweeTknsNhlcueEkMsZsjxWecklOGvl5wMxTUGzcMj7jgA2gC54FhRNkGwAOhdDErfyFFFyLd71sTcrDghZ0s7hUKiAl0HoHxGlrCQbhBpMZXmgJVQVy0jrzxgzXYQKlrBmNC3 X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(46966006)(36840700001)(33964004)(44144004)(8886007)(235185007)(8936002)(2616005)(4326008)(336012)(508600001)(86362001)(81166007)(7696005)(83380400001)(5660300002)(356005)(36756003)(55016002)(8676002)(2906002)(47076005)(4743002)(82310400003)(186003)(70206006)(70586007)(316002)(44832011)(6666004)(36860700001)(107886003)(956004)(6916009)(26005)(4216001)(2700100001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2021 15:35:34.9207 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1f6df9ff-159f-47dc-ae9f-08d9a916bb7f X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6826 X-Spam-Status: No, score=-13.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY 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-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tamar Christina via Gcc-patches From: Tamar Christina Reply-To: Tamar Christina Cc: nd@arm.com, rguenther@suse.de Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi All, convert_mult_to_fma assumes that all gimple_assigns have a LHS set. This assumption is however not true when an IFN is kept around just for the side-effects. In those situations you have just the IFN and lhs will be null. Since there's no LHS, there also can't be any ADD and such it can't be an FMA so it's correct to just return early if no LHS. Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu and no regressions. Ok for master? Thanks, Tamar gcc/ChangeLog: PR tree-optimizations/103253 * tree-ssa-math-opts.c (convert_mult_to_fma): Check for LHS. gcc/testsuite/ChangeLog: * gcc.dg/vect/pr103253.c: New test. --- inline copy of patch -- diff --git a/gcc/testsuite/gcc.dg/vect/pr103253.c b/gcc/testsuite/gcc.dg/vect/pr103253.c new file mode 100644 index 0000000000000000000000000000000000000000..abe3f09f3818d79a53f2aa962c6b6c06855d618e diff --git a/gcc/testsuite/gcc.dg/vect/pr103253.c b/gcc/testsuite/gcc.dg/vect/pr103253.c new file mode 100644 index 0000000000000000000000000000000000000000..abe3f09f3818d79a53f2aa962c6b6c06855d618e --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr103253.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target fopenmp } */ +/* { dg-additional-options "-O2 -fexceptions -fopenmp -fno-delete-dead-exceptions -fno-trapping-math" } */ + +double +do_work (double do_work_pri) +{ + int i; + +#pragma omp simd + for (i = 0; i < 17; ++i) + do_work_pri = (!i ? 0.5 : i) * 2.0; + + return do_work_pri; +} + diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index c4a6492b50df25b4cf296a75bd51e5af34eeacc7..cc8496c3c325f3cc303a90b9b9cac383e5a7942d 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -3224,6 +3224,10 @@ convert_mult_to_fma (gimple *mul_stmt, tree op1, tree op2, fma_deferring_state *state, tree mul_cond = NULL_TREE) { tree mul_result = gimple_get_lhs (mul_stmt); + /* If there isn't a LHS then this can't be an FMA. There can be no LHS + if the statement was left just for the side-effects. */ + if (!mul_result) + return false; tree type = TREE_TYPE (mul_result); gimple *use_stmt, *neguse_stmt; use_operand_p use_p;