From patchwork Thu Feb 13 22:44:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Jelinek X-Patchwork-Id: 1237787 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-519507-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha1 header.s=default header.b=lDot1eor; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=IvcUj1zk; 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 48JWp16nkVz9sP7 for ; Fri, 14 Feb 2020 09:46:17 +1100 (AEDT) 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:subject:message-id:reply-to:mime-version:content-type; q=dns; s=default; b=MWFi/oWlABANyiTCLbJ9ohYZSBGTukC/0DgO3lUWK6o gLsCDcZt976D/jetaHFE1mQt3RCZWNyiU1a0030OhW1aE0aKSaN4d7mARusBcI46 eXV+WOQssAXvTpN/VW7LNQZ8zxdTucfQekBQNr6nLzeKoLwcBnoN/OWeiXaApClM = 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:subject:message-id:reply-to:mime-version:content-type; s=default; bh=5w7fVtmiZCgtNzIfzqdCrP+192M=; b=lDot1eor9e2HMYHFn xYZ4jSNpIIcfzvctrArDIUSPSZVNaXrL+JNespis6OJAJhurW0U3q9z9zF/w9m4s Xzzpi26VBP5vUdNm3WIjbXirTwCv3uOqIwRr4UVedxJ3m8TDuPvWoYr30j75rhJh S4p16rf0n8Uvd1fLgcNmIBuXdc= Received: (qmail 19112 invoked by alias); 13 Feb 2020 22:45:52 -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 18929 invoked by uid 89); 13 Feb 2020 22:45:41 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-15.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LOTSOFHASH, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy= X-HELO: us-smtp-delivery-1.mimecast.com Received: from us-smtp-1.mimecast.com (HELO us-smtp-delivery-1.mimecast.com) (207.211.31.81) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 13 Feb 2020 22:45:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1581633914; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type; bh=wu6p2pCbAfRvNn047e7c4W2BCdoHvbwAnNJWFqLE9jc=; b=IvcUj1zkRCOnypN0Am6NlzEN/rSLHrwTQ5FP3GGFZG8thCjyaasGR/W2eCupQBaYiQJ7N1 JkCLr5JhpotBuMStUAaCPZ71d1hC+J02De5FJm3b+TZ70LFQSeRZZaUH0rbocQqeha8AP2 NYnRbzyZSxzyMZMVpDdJu8qrmLHUe88= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-349-3hIYTYOIMUSgdhqhVmhx1w-1; Thu, 13 Feb 2020 17:45:02 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BCBF9DBA5 for ; Thu, 13 Feb 2020 22:45:01 +0000 (UTC) Received: from tucnak.zalov.cz (ovpn-116-51.ams2.redhat.com [10.36.116.51]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D804B90097 for ; Thu, 13 Feb 2020 22:45:00 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.15.2/8.15.2) with ESMTP id 01DMiwpS014089 for ; Thu, 13 Feb 2020 23:44:59 +0100 Received: (from jakub@localhost) by tucnak.zalov.cz (8.15.2/8.15.2/Submit) id 01DMiv53014088 for gcc-patches@gcc.gnu.org; Thu, 13 Feb 2020 23:44:57 +0100 Date: Thu, 13 Feb 2020 23:44:57 +0100 From: Jakub Jelinek To: gcc-patches@gcc.gnu.org Subject: Backports to 9.3 Message-ID: <20200213224457.GL17695@tucnak> Reply-To: Jakub Jelinek MIME-Version: 1.0 User-Agent: Mutt/1.11.3 (2019-02-01) X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline X-IsSubscribed: yes Hi! I've backported following 15 commits from trunk to 9.3 branch, bootstrapped/regtested on x86_64-linux and i686-linux, committed. r10-6186-g32667e04c7153d97d09d81c1af073d400f0c719a r10-6273-gbff948aa337807260344c83ac9079d6386410094 r10-6314-gaa1b56967d85bfc80d71341395f862ec2b30ca36 r10-6315-g8d7c0bf876fa784101f9ad9e3bba82cc065357da r10-6358-g56b92750f83724177d2c6eae30c208e935a56a37 r10-6444-gb843bcb89519293404bb00d2ed09aae529b54d7f r10-6460-g5a8ad97b6e4823d4ded00a3ce8d80e4bf93368d4 r10-6470-gcf785618ecc90e3f063b99572de48cb91aa5ab5d r10-6471-gcb3f06480a17f98579704b9927632627a3814c5c r10-6522-g79ab8c4321b2dc940bb706a7432a530e26f0df1a r10-6565-gf57aa9503ff170ff6c8549718bd736f6c8168bab r10-6593-g62fc0a6ce28c502fc6a7b7c09157840bf98f945f r10-6612-gdc6d0f89d4be3ed7fde73417606a78c73d954cdf r10-6617-gae2b8ede40a81a83f50d1e705972bc46fafd4ce5 r10-6625-gbacdd5e978dad84e9c547b0d5c7fed14b8d75157 Jakub From 3b2fbe3e723b20ea9089e5f45c55b79feb37085b Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 23 Jan 2020 20:08:22 +0100 Subject: [PATCH 01/15] postreload: Fix up postreload combine [PR93402] The following testcase is miscompiled, because the postreload pass changes: -(insn 14 13 23 2 (parallel [ - (set (reg:DI 1 dx [94]) - (plus:DI (reg:DI 1 dx [95]) - (reg:DI 5 di [92]))) - (clobber (reg:CC 17 flags)) - ]) "pr93402.c":8:30 186 {*adddi_1} - (expr_list:REG_EQUAL (plus:DI (reg:DI 5 di [92]) - (const_int 111111111111 [0x19debd01c7])) - (nil))) -(insn 23 14 25 2 (set (reg:SI 0 ax) +(insn 23 13 25 2 (set (reg:SI 0 ax) (const_int 0 [0])) "pr93402.c":10:1 67 {*movsi_internal} (nil)) (insn 25 23 26 2 (use (reg:SI 0 ax)) "pr93402.c":10:1 -1 (nil)) -(insn 26 25 35 2 (use (reg:DI 1 dx)) "pr93402.c":10:1 -1 +(insn 26 25 35 2 (use (plus:DI (reg:DI 1 dx [95]) + (reg:DI 5 di [92]))) "pr93402.c":10:1 -1 (nil)) A USE insn is not a normal insn and verify_changes called from apply_change_group is happy about any changes into it. The following patch avoids this optimization if we were to change the USE operand (this routine only changes a reg into (plus reg reg2)). 2020-01-23 Jakub Jelinek PR rtl-optimization/93402 * postreload.c (reload_combine_recognize_pattern): Don't try to adjust USE insns. * gcc.c-torture/execute/pr93402.c: New test. --- gcc/ChangeLog | 9 ++++++++ gcc/postreload.c | 4 ++++ gcc/testsuite/ChangeLog | 8 +++++++ gcc/testsuite/gcc.c-torture/execute/pr93402.c | 21 +++++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr93402.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1916dab20d1..2029c67bf02 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2020-02-13 Jakub Jelinek + + Backported from mainline + 2020-01-23 Jakub Jelinek + + PR rtl-optimization/93402 + * postreload.c (reload_combine_recognize_pattern): Don't try to adjust + USE insns. + 2020-02-11 Tamar Christina Backport from mainline diff --git a/gcc/postreload.c b/gcc/postreload.c index 728aa9b0ed5..b76c7b0b758 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -1081,6 +1081,10 @@ reload_combine_recognize_pattern (rtx_insn *insn) struct reg_use *use = reg_state[regno].reg_use + i; if (GET_MODE (*use->usep) != mode) return false; + /* Don't try to adjust (use (REGX)). */ + if (GET_CODE (PATTERN (use->insn)) == USE + && &XEXP (PATTERN (use->insn), 0) == use->usep) + return false; } /* Look for (set (REGX) (CONST_INT)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1dcf894a92a..bec5eba5033 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2020-02-13 Jakub Jelinek + + Backported from mainline + 2020-01-23 Jakub Jelinek + + PR rtl-optimization/93402 + * gcc.c-torture/execute/pr93402.c: New test. + 2020-02-11 Tamar Christina Backport from mainline diff --git a/gcc/testsuite/gcc.c-torture/execute/pr93402.c b/gcc/testsuite/gcc.c-torture/execute/pr93402.c new file mode 100644 index 00000000000..6487797d0aa --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr93402.c @@ -0,0 +1,21 @@ +/* PR rtl-optimization/93402 */ + +struct S { unsigned int a; unsigned long long b; }; + +__attribute__((noipa)) struct S +foo (unsigned long long x) +{ + struct S ret; + ret.a = 0; + ret.b = x * 11111111111ULL + 111111111111ULL; + return ret; +} + +int +main () +{ + struct S a = foo (1); + if (a.a != 0 || a.b != 122222222222ULL) + __builtin_abort (); + return 0; +}