From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 115199 invoked by alias); 13 Jul 2016 07:59:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 115179 invoked by uid 89); 13 Jul 2016 07:59:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=exchange, fortunately, subq, addq X-HELO: mail-wm0-f48.google.com Received: from mail-wm0-f48.google.com (HELO mail-wm0-f48.google.com) (74.125.82.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 13 Jul 2016 07:59:48 +0000 Received: by mail-wm0-f48.google.com with SMTP id i5so55661613wmg.0 for ; Wed, 13 Jul 2016 00:59:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=VTCkHdDPkBQrE8m5vvgoNpOFcdIp6huqLLP8RCwxrFc=; b=JFdyYQ4CJLFejvL14ciaufqL1iYtWa/mdYYCVnsK6ACBiLty2iKYCRtaQGgaSgzLCh HqYtSbYtM8cn6TUgO7YYWeGNY66udStcfL8XLhZgBoiJZ2HpDnfYZm4HJAWVl5tQH6oZ 52Sh4VPpiTZyHBEVkSXMBHRQtf5Edw/ffIy8QZe8BrB4MjMzqG3PkvnENCKY3+lLqhNc r/6a3PCtTdRlqTQMVnZbN2pbLZ+Qds2uDkgWE42I+Ge2/T2rv/ZHZaVSrDpbrGRXRnS0 eIlyVUQ8e2lnNeshYCEM7tzOllDjcPVKKIIy/ZRrTE4BGE9wUpVeFa6vsr4Hk5+V7LxS 4LRg== X-Gm-Message-State: ALyK8tJNKyvLDtS/A5h3X+nPR+vIjPs3YiLrNuhRIuUbm26DCM2CLPa/Ci6gCEpjJx93YWbkf8iPBN61pGi/OQ== X-Received: by 10.28.45.15 with SMTP id t15mr24296257wmt.37.1468396785503; Wed, 13 Jul 2016 00:59:45 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.147.203 with HTTP; Wed, 13 Jul 2016 00:59:44 -0700 (PDT) In-Reply-To: <2468e022-9f46-e552-93c4-2c5d605f14ae@redhat.com> References: <2468e022-9f46-e552-93c4-2c5d605f14ae@redhat.com> From: Richard Biener Date: Wed, 13 Jul 2016 07:59:00 -0000 Message-ID: Subject: Re: [PATCH] Fix PR71104 - call gimplification To: Jeff Law Cc: GCC Patches , "Joseph S. Myers" Content-Type: multipart/mixed; boundary=001a11422b38cb59a605377fc455 X-IsSubscribed: yes X-SW-Source: 2016-07/txt/msg00697.txt.bz2 --001a11422b38cb59a605377fc455 Content-Type: text/plain; charset=UTF-8 Content-length: 2587 On Wed, May 18, 2016 at 7:43 PM, Jeff Law wrote: > On 05/17/2016 06:28 AM, Richard Biener wrote: >> >> >> The following patch addresses PR71104 which shows verify-SSA ICEs >> after gimplify-into-SSA. The issue is that for returns-twice calls >> we gimplify register uses in the LHS before the actual call which leads to >> >> p.0_1 = p; >> _2 = vfork (); >> *p.0_1 = _2; >> >> when gimplifying *p = vfork (). That of course does not work - >> fortunately the C standard allows to evaluate operands in the LHS >> in unspecified order of the RHS. That also makes this order aligned >> with that scary C++ proposal of defined evaluation order. It also >> improves code-generation, avoiding spilling of the pointer load >> around the call. >> >> Exchanging the gimplify calls doesn't fix the issue fully as for >> aggregate returns we don't gimplify the call result into a >> temporary. So we need to make sure to not emit an SSA when >> gimplifying the LHS of a returns-twice call (this path only applies >> to non-register returns). >> >> A bootstrap with just the gimplification order exchange is building >> target libs right now, I'll re-bootstrap and test the whole thing >> again if that succeeds. >> >> Is this ok? I think it makes sense code-generation-wise. Code >> changes from GCC 6 >> >> bar: >> .LFB0: >> .cfi_startproc >> subq $24, %rsp >> .cfi_def_cfa_offset 32 >> call foo >> movq p(%rip), %rax >> movq %rax, 8(%rsp) >> call vfork >> movq 8(%rsp), %rdx >> movl %eax, (%rdx) >> addq $24, %rsp >> .cfi_def_cfa_offset 8 >> ret >> >> to >> >> bar: >> .LFB0: >> .cfi_startproc >> subq $8, %rsp >> .cfi_def_cfa_offset 16 >> call foo >> call vfork >> movq p(%rip), %rdx >> movl %eax, (%rdx) >> addq $8, %rsp >> .cfi_def_cfa_offset 8 >> ret >> >> Thanks, >> Richard. >> >> 2016-05-17 Richard Biener >> >> PR middle-end/71104 >> * gimplify.c (gimplify_modify_expr): Gimplify the RHS before >> gimplifying the LHS. Make sure to gimplify a returning twice >> call LHS without using SSA names. >> >> * gcc.dg/pr71104-1.c: New testcase. >> * gcc.dg/pr71104-2.c: Likewise. > > LGTM. Now after Jason applied a better solution for gimplifying the RHS before the LHS I have applied the following after bootstrap / regtest on x86_64-unknown-linux-gnu. Richard. > jeff > --001a11422b38cb59a605377fc455 Content-Type: application/octet-stream; name=fix-pr71104 Content-Disposition: attachment; filename=fix-pr71104 Content-Transfer-Encoding: base64 X-Attachment-Id: f_iqklj1lv0 Content-length: 2859 MjAxNi0wNy0xMyAgUmljaGFyZCBCaWVuZXIgIDxyZ3VlbnRoZXJAc3VzZS5k ZT4KCglQUiBtaWRkbGUtZW5kLzcxMTA0CgkqIGdpbXBsaWZ5LmMgKGdpbXBs aWZ5X21vZGlmeV9leHByKTogR2ltcGxpZnkgdGhlIFJIUyBiZWZvcmUKCWdp bXBsaWZ5aW5nIHRoZSBMSFMuICBNYWtlIHN1cmUgdG8gZ2ltcGxpZnkgYSBy ZXR1cm5pbmcgdHdpY2UKCWNhbGwgTEhTIHdpdGhvdXQgdXNpbmcgU1NBIG5h bWVzLgoKCSogZ2NjLmRnL3ByNzExMDQtMS5jOiBOZXcgdGVzdGNhc2UuCgkq IGdjYy5kZy9wcjcxMTA0LTIuYzogTGlrZXdpc2UuCgpJbmRleDogZ2NjL2dp bXBsaWZ5LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoqKiogZ2NjL2dpbXBs aWZ5LmMJKHJldmlzaW9uIDIzODIzNykKLS0tIGdjYy9naW1wbGlmeS5jCSh3 b3JraW5nIGNvcHkpCioqKioqKioqKioqKioqKiBnaW1wbGlmeV9tb2RpZnlf ZXhwciAodHJlZSAqZXhwcl9wLCBnaW1wCioqKiA0ODEwLDQ4MTYgKioqKgot LS0gNDgxMiw0ODMwIC0tLS0KICAgICAgcmV0dXJuIHJldDsKICAKICAgIC8q IFRoZW4gZ2ltcGxpZnkgdGhlIExIUy4gICovCisgICAvKiBJZiB3ZSBnaW1w bGlmaWVkIHRoZSBSSFMgdG8gYSBDQUxMX0VYUFIgYW5kIHRoYXQgY2FsbCBt YXkgcmV0dXJuCisgICAgICB0d2ljZSB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0 byBnaW1wbGlmeSBpbnRvIG5vbi1TU0EgYXMgb3RoZXJ3aXNlCisgICAgICB0 aGUgYWJub3JtYWwgZWRnZSBhZGRlZCBsYXRlciB3aWxsIG1ha2UgdGhvc2Ug ZGVmcyBub3QgZG9taW5hdGUKKyAgICAgIHRoZWlyIHVzZXMuCisgICAgICA/ Pz8gIFRlY2huaWNhbGx5IHRoaXMgYXBwbGllcyBvbmx5IHRvIHRoZSByZWdp c3RlcnMgdXNlZCBpbiB0aGUKKyAgICAgIHJlc3VsdGluZyBub24tcmVnaXN0 ZXIgKlRPX1AuICAqLworICAgYm9vbCBzYXZlZF9pbnRvX3NzYSA9IGdpbXBs aWZ5X2N0eHAtPmludG9fc3NhOworICAgaWYgKHNhdmVkX2ludG9fc3NhCisg ICAgICAgJiYgVFJFRV9DT0RFICgqZnJvbV9wKSA9PSBDQUxMX0VYUFIKKyAg ICAgICAmJiBjYWxsX2V4cHJfZmxhZ3MgKCpmcm9tX3ApICYgRUNGX1JFVFVS TlNfVFdJQ0UpCisgICAgIGdpbXBsaWZ5X2N0eHAtPmludG9fc3NhID0gZmFs c2U7CiAgICByZXQgPSBnaW1wbGlmeV9leHByICh0b19wLCBwcmVfcCwgcG9z dF9wLCBpc19naW1wbGVfbHZhbHVlLCBmYl9sdmFsdWUpOworICAgZ2ltcGxp ZnlfY3R4cC0+aW50b19zc2EgPSBzYXZlZF9pbnRvX3NzYTsKICAgIGlmIChy ZXQgPT0gR1NfRVJST1IpCiAgICAgIHJldHVybiByZXQ7CiAgCgpJbmRleDog Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI3MTEwNC0xLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI3MTEwNC0x LmMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjcx MTA0LTEuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKwordm9pZCBmb28odm9pZCk7CitpbnQgdmZv cmsodm9pZCk7CitpbnQgKnA7CisKK3ZvaWQgYmFyKHZvaWQpCit7CisgIGZv bygpOworICAqcCA9IHZmb3JrKCk7Cit9CkluZGV4OiBnY2MvdGVzdHN1aXRl L2djYy5kZy9wcjcxMTA0LTIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjcxMTA0LTIuYwkocmV2aXNpb24g MCkKKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNzExMDQtMi5jCShyZXZp c2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworCitzdHJ1Y3QgRm9vIHsgY2hhciBjWzEwMjRdOyB9Owordm9pZCBm b28odm9pZCk7CitzdHJ1Y3QgRm9vIGJheih2b2lkKSBfX2F0dHJpYnV0ZV9f KChyZXR1cm5zX3R3aWNlKSk7CitzdHJ1Y3QgRm9vICpwOworCit2b2lkIGJh cih2b2lkKQoreworICBmb28oKTsKKyAgKnAgPSBiYXooKTsKK30K --001a11422b38cb59a605377fc455--