From patchwork Tue Aug 22 16:27:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 804568 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-460726-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="xhTNg+L5"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xcGDt0ST4z9sRq for ; Wed, 23 Aug 2017 02:27:41 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; q=dns; s=default; b=vav2J9s1n40NLralw4VNt9T8tYM1Qo+46razuRzLu37qLDfIeK OrNnLTV06Wz3qDUMOvE+i+s4G4W/R9eppaf2pgogiYxRtJaxW6sBSwp8bjUmCDJ/ BPx1LWg+tDqzA6zA7MGjyylli56I5j7f32OHMh9qwjecgdLNiuPodApQ8= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; s= default; bh=UfHE4aKf04o2Q13eoch1B7pES/w=; b=xhTNg+L5tVnUuBehVyX1 lydnuKPCc1+KK714hL8+bSx7zNLQrkP1mvuyEIomFRCDCf8majlcBjeiUNJh3wUW R3IAiDsLQNVgjVPnfPPtI8g6VltNNdSxWspkpZaqbM6TZ9jIKedNPaKWcLC/SWh6 7exnNCJW/cZhdzXfGwTYcjk= Received: (qmail 5607 invoked by alias); 22 Aug 2017 16:27:33 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 5598 invoked by uid 89); 22 Aug 2017 16:27:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com Received: from mail-ve1eur01on0051.outbound.protection.outlook.com (HELO EUR01-VE1-obe.outbound.protection.outlook.com) (104.47.1.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 22 Aug 2017 16:27:30 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Tamar.Christina@arm.com; Received: from arm.com (217.140.96.140) by VI1PR0802MB2317.eurprd08.prod.outlook.com (2603:10a6:800:9e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18; Tue, 22 Aug 2017 16:27:26 +0000 Date: Tue, 22 Aug 2017 17:27:23 +0100 From: Tamar Christina To: gcc-patches@gcc.gnu.org Cc: nd@arm.com, law@redhat.com Subject: [PATCH][GCC][mid-end] Fix single use requirement for xorsign (x * copysign (1, y)) Message-ID: <20170822162720.GA30641@arm.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-ClientProxiedBy: AM5PR0102CA0019.eurprd01.prod.exchangelabs.com (2603:10a6:206::32) To VI1PR0802MB2317.eurprd08.prod.outlook.com (2603:10a6:800:9e::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ff2c1b7c-4f52-4eea-61d4-08d4e97aad09 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(49563074)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:VI1PR0802MB2317; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2317; 3:xIwkcgneGPkoUYukC0nXXrNYbE8gsCjRuedWvAfNpR4AbjhA9ag/lsCNX9ftprbMMKDc+u+jsbr116OxK/SIm78XcAmJCOrmQ6ESGYBGO5nEtoGAHoqNYxhOrNfVzqpHsNlyw8FCrbreXoI4nhZ0wa6Xmu7oD3WqPEGucjJDP3basZfMRkk0CkRDQqS6M2ilBb3LioTDAXK8f2wrfFxwsPBHUHSqNHBEZXkytk3YTotpXJAAAhfXZBilFAIGYWzU; 25:b/AWwUvli7AUIc3KDa1xwSg13nRvj5tXNqOJL4gRRpI3gMZEkux405vWneh4LggVDYRjW8GFjSi0uWrUvsQpqtjfmqkFhebYRGF6nNybOBgzxoJZZFgFrMEaQmICZH9jzeJ1CVhBuxPaukTsGWi/AFp56JoudNf9Kzlvm7iPVtnSlyJ4BRe5uQjzLa8DK7wkxzIatNyBonkr99jfKo3FJgWs4NUr/BKS2ZcKbQ5E+HmRw9BkE52kjA9Z7+4S/bgV/09IF4/4c00NJtv6N+BDLw94I3ZnI1BrSLnDe0y2bf68KOvvGatyznB6DD/KlUgsbPW6dXiaZiSaLrToxuQQhg==; 31:GZS99musWdc2p3lIMzESlIRrUwnpS6iOpHAE/fcE/Bo5vq6j7UeacbvnrPuDJ8Kgs8B97IsNO2TjvizoDSzVZgJJ43adagql+iJ92lleQzEOuAnIT+sNAjSXyIIga0yQ6sXOUQj1+mCCLONWW7wU74iqMbwpKts347SPE3mFSKkji+jvZGNB7TBs4Mb6vsmdh7epD8gCReQ2Kkl7LMtLFX4LSyB/T8swRmenjeF5vK4= X-MS-TrafficTypeDiagnostic: VI1PR0802MB2317: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2317; 20:jJj8V1ldjHvZIqJvY1I5b+ocNAbYe3QTUJC6PLNjDhFQ6m8R6dbyKpNbGtAccCHwKbroa804/wSZ+U2EWy1DJ4QdxKG8G7pBNsdB0ee6jSZ0/zPw/HKew6ok+zbOFZmayMuPk7s/Kbuz2x1UNmESUE0IO+Mn5asoqp50kAFzoH4=; 4:r/fYkMsTf+sd9pYZUJsJMhLkGxncJw1iYr+YKrM6uCHd1GHuJ21W63OaRVLJnKk+DWyrlFWBM/EmECvsUTBA3OLJKA/laZgayEBlWK874D+nI0AIcnAN3p/NUIOTGWZBU+MxXfoWmDc/SJTx/4MAQbABM3kytnDxvYPBfy9IJVnJhjRqk+Gmhp2wfwRF0lRK1iTP+rOfkBMnBVAn3zP4QhWeoy+2BYBt7GOoZZaiGk5FSsFbg9n6uDWeYQbTQX+K5FdmfsYeZTIzLlal0uNJ9YzIpVG9XNpXdneC0HQ87WY= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123564025)(20161123562025)(20161123560025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0802MB2317; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0802MB2317; X-Forefront-PRVS: 04073E895A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(53754006)(377424004)(199003)(189002)(72206003)(5660300001)(21086003)(86362001)(6116002)(68736007)(4610100001)(84326002)(6666003)(97736004)(66066001)(5000100001)(8676002)(110136004)(83506001)(2906002)(81166006)(478600001)(36756003)(7350300001)(305945005)(189998001)(81156014)(6916009)(7736002)(5890100001)(42186005)(2351001)(53936002)(4001350100001)(2476003)(1076002)(105586002)(101416001)(4326008)(50986999)(54356999)(3846002)(33656002)(568964002)(25786009)(2361001)(106356001)(55016002)(18370500001)(2700100001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0802MB2317; H:arm.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0802MB2317; 23:lINjeG4+EIRTmzTSvTd+0f7nCybyG7FPrBvlMzA?= =?us-ascii?Q?zCgwcOvB74FkKzSKjr8nJj/tw4KBzrdIB131IbXdl0/7miiT7qJTxI0p4kcJ?= =?us-ascii?Q?EopNal+D4vU39UEkuVBALW5m6Yuq5mDV/fT71uFwM9uor6Wr9YA4rFY1DiBN?= =?us-ascii?Q?+bw2d+mG/V6S5h6wukjb3hk/5vlxE0S36/paCKbelnVXSj6G15mCokg52ZTm?= =?us-ascii?Q?oL/NOsJXDCGA/mNkZqI7m5nNb5rioyM1ZaV1fDYU8NO94A8dYNmZGBD7onOb?= =?us-ascii?Q?aQbSnZWCguN0oP3zXBA6NpZb5yZMwNMqAekMYVQ9v7sGUGN0YLTNp7+aj7cc?= =?us-ascii?Q?hmEhwUdF0LWuzUAcccOvJvDFxMUOSztjH4AMsneU8YMPeOhoUlZZZUao/y0M?= =?us-ascii?Q?HBs4XFoKuVSS7OlJB6NGmk+YiYhppy5JgFCcNAdO5Gtp9j2J4uFKTrcIUmSZ?= =?us-ascii?Q?8pxpUTqIOrOKbLQ41F2R7dTYxAw2PrIZGD5h1AWndHQLqa0ckdL09LDI3yuZ?= =?us-ascii?Q?qGxfB/AYmuTa8ezK7kAr9Pt1KrMeDXew/0OTRdVcvmqsGyONBfKDaoiHr8sy?= =?us-ascii?Q?AQcFMBgIgjKvzZaaGzvPSwWT3/elDQ6dElZFv+IUq+GGBkSqUc0SrrZ/kAL/?= =?us-ascii?Q?nQ8I5PxNlR1cyoiRlkZaJpcUbu25qBQN2q+fKcW1rRo7d4bi88ufL6AU8GVo?= =?us-ascii?Q?xAlmzOCtGv5+KyIQHgReE0SE8NzlNOghoEjS0tNTFlMrh1YUCb2Wz3k3Pb9m?= =?us-ascii?Q?QcU/bGsul7y+kow9q8B6Gy8qygWZ6xxL6m33N0GOOhmKxj17vGJRPbkjBCkr?= =?us-ascii?Q?YAKks+n7LfethD1iJEmLX4W+3aJG6u00PO/mzudpyIBLFKRhkQpND825McCk?= =?us-ascii?Q?IjjlratqpDRbI3JUlwskg64yUo0X0JaOf/3cOG3+hF89sH2Iw4keuNp9D/Yo?= =?us-ascii?Q?rgOwHAh3RbmBQhoIBsLRcgrOA7tXxjxAFiHEugiLxcCXU8VDZ04S+kEJNVy3?= =?us-ascii?Q?iMV/0gHc0ia+0p/pkZRWkgLHuIlHjjJNu0sTVDHKn78EELjhx4h2l5QCMOTQ?= =?us-ascii?Q?+6yUMDmgoYbPKb+/H1GBqLekAF9K7GV4P8/VGYiMxd+RzBONZPDgqG95qPCv?= =?us-ascii?Q?yz8J3fECST/5WbFjAF2xMjHA3hBcjDNP7P5yBhXWyfH/MzRL6HQ5fYF5dk44?= =?us-ascii?Q?VXaC+9EWhVkUHji7I94JNFJaJealtzJnN9ZoxQ4J5G10gGFWKHchOrYL5TlP?= =?us-ascii?Q?KA/qCuJRMH0i69CkYGTbj2HZclor1nh9aAQFB0unUf9Fx/UOSvNB/Ytar/TQ?= =?us-ascii?Q?5jg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2317; 6:1gsW3Y9ds8WMaivEPCSBr0JaUq3QczhbWipcnSAXkalXta99aLA3XWBSR9eTqJ7xYYcDGTmEg2MgPsrbobZmrupTT6er4gmNefe6gW0avk98eHN9ZuQzPxnAHt8Z2wO7Ul85yEIb9InazA2CRAwBKGzvVIXNajFMe+c0BR6TWhg4Cbcb4Ue2e0rhGqlzA4KbyvAAAvBnj/dbl7FOuoyUQkmjdd6FSFZDYRAz5TDs7HGd8run5fHPuYhastwH0Ax6h69N4RBScWwxZA8MT9yBdyFTuWYp5O80POHwpn4oSl4u0qNJh3eC7UvRgvfWtBQE85qnZghqHpTbzCRG/obxuA==; 5:W8cPCMH2Msys+DY5vWy/ArrWg7CFOGcQyqcQE7CtUDzcdPdJQ3svGXEaWJTnRlaqRIreo6cmAnPsMUKo7B8d33wz/xND/x6KE+v1un0RDJzcc6nmoR/u9Or7Q37+BzeI4z3gjNWo5EhAAwiPbJ6pyw==; 24:dTafFe6Fl9JY39Pqn9Tzrjs6x6wC+2b8YWliXKyqlLqwajiHm44nCkKGWAGBp+kHt6ZuNU2F5RpNvEdw4rRCLPWStGr/eJu+4/k6i57Jeow=; 7:REca0ewJScEQfJs1rXtbq+3H09W7aifYHa35l4Xv/IiLcyhwFUnLUYGPqM89+wLu9FSIm/Nrz4ysBES4J+goIG/oxmXvY/WrRQl/YY3EUnw1Lk4E4z/rr/iatnrdHxlSmgNzEyBOvYPpMdpe3JMIPjfJxQSWhMEP+Kp5AnBJmwp8Cm1pIqf+qJOtbkKnf5v5OithSt9Wfq1Ebzw4uMJuLCfd1TJtkvhZ3Jh3oVuYDiY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2017 16:27:26.1937 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2317 X-IsSubscribed: yes Hi All, This patch fixes the placement of the single-use requirement for xorsign. on `x = a * copysign (1, b)` the intention was that `copysign (1, b)` be single use, and not `x`. Requiring `x` to be single use blocks transformation where we do want it to occur. Regtested on aarch64-none-linux-gnu and no regressions (only target currently supporting this). Ok for trunk? gcc/ 2017-08-22 Tamar Christina PR middle-end/19706 * tree-ssa-math-opts.c (convert_expand_mult_copysign): Fix single-use check. diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 87940b6e00db0d34a472504cf70923d1d334eccb..f26d105c16145bc77dd5e3a05b13f22aff43d4d8 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -3200,21 +3200,20 @@ convert_expand_mult_copysign (gimple *stmt, gimple_stmt_iterator *gsi) type = TREE_TYPE (lhs); machine_mode mode = TYPE_MODE (type); - if (HONOR_SNANS (type) || !has_single_use (lhs)) + if (HONOR_SNANS (type)) return false; if (TREE_CODE (treeop0) == SSA_NAME && TREE_CODE (treeop1) == SSA_NAME) { gimple *call0 = SSA_NAME_DEF_STMT (treeop0); - if (!is_copysign_call_with_1 (call0)) + if (!is_copysign_call_with_1 (call0) || !has_single_use (treeop0)) { call0 = SSA_NAME_DEF_STMT (treeop1); - if (!is_copysign_call_with_1 (call0)) + if (!is_copysign_call_with_1 (call0) || !has_single_use (treeop1)) return false; treeop1 = treeop0; } - if (optab_handler (xorsign_optab, mode) == CODE_FOR_nothing) return false;