From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 89778 invoked by alias); 6 Mar 2019 10:06:06 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 89731 invoked by uid 89); 6 Mar 2019 10:06:05 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=lean, retire, H*f:sk:5d6c4bc, H*i:sk:5d6c4bc X-HELO: mail-lj1-f194.google.com Received: from mail-lj1-f194.google.com (HELO mail-lj1-f194.google.com) (209.85.208.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 06 Mar 2019 10:06:04 +0000 Received: by mail-lj1-f194.google.com with SMTP id q128so10308377ljb.11; Wed, 06 Mar 2019 02:06:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/U7rAFvi+HC1GIFDzuzfJAElPSPdfL699Ijdh9oRBkM=; b=I/T0Jy6wzSacFw7B9lqYnocGMyQaoZ5i2mVFLMByiK9HG1kWWrcleXIBN12tYWxP94 6O+1bOdakSCXzxb6O2mTsfJRtQRy4GQiysfsv0Eyd3dD7sHo4bjanhVna3ni9rKv1CR4 4okj/ATzEiFkccL0tUDEz3Bo8ify4J3dtSzdcU6tWIP49BYLZ0yipn5iC/t1yEQteIXZ PZS9/OgD/7QHoe1fBj8/YEZecjC+3kVz/5WgH3r6I+ynMHE869bctThlc6KoY0LIWd/9 fQQpIbuo4SR5MoYvEZb4Y9za10xnTPmFScDo3/iCX0g4sDOxi30JxN1alSs+hIdoqxt6 EiYw== MIME-Version: 1.0 References: <933b52ac-d372-f9d9-792e-4166f35b41f5@redhat.com> <327DC916-C1B4-47F9-92AE-468236D32C1F@oracle.com> <81846359-36B4-46F1-9C5C-8E20F927FE9F@oracle.com> <5d6c4bc0-c000-7b8f-f40e-17b9a104071e@redhat.com> In-Reply-To: <5d6c4bc0-c000-7b8f-f40e-17b9a104071e@redhat.com> From: Richard Biener Date: Wed, 06 Mar 2019 10:06:00 -0000 Message-ID: Subject: Re: A bug in vrp_meet? To: Jeff Law Cc: Qing Zhao , GCC Development , gcc Patches Content-Type: multipart/mixed; boundary="00000000000012ddcd05836a23f3" X-IsSubscribed: yes X-SW-Source: 2019-03/txt/msg00043.txt.bz2 --00000000000012ddcd05836a23f3 Content-Type: text/plain; charset="UTF-8" Content-length: 2241 On Tue, Mar 5, 2019 at 10:36 PM Jeff Law wrote: > > On 3/5/19 7:44 AM, Richard Biener wrote: > > > So fixing it properly with also re-optimize_stmt those stmts so we'd CSE > > the MAX_EXPR introduced by folding makes it somewhat ugly. > > > > Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. > > > > Any ideas how to make it less so? I can split out making optimize_stmt > > take a gsi * btw, in case that's a more obvious change and it makes the > > patch a little smaller. > > > > Richard. > > > > 2019-03-05 Richard Biener > > > > PR tree-optimization/89595 > > * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Take > > stmt iterator as reference, take boolean output parameter to > > indicate whether the stmt was removed and thus the iterator > > already advanced. > > (dom_opt_dom_walker::before_dom_children): Re-iterate over > > stmts created by folding. > > > > * gcc.dg/torture/pr89595.c: New testcase. > > > > Well, all the real logic changs are in the before_dom_children method. > The bits in optimize_stmt are trivial enough to effectively ignore. > > I don't see a better way to discover and process statements that are > created in the bowels of fold_stmt. I'm not entirely happy so I created the following alternative which is a bit larger and slower due to the pre-pass clearing the visited flag but is IMHO easier to follow. I guess there's plenty of TLC opportunity here but then I also hope to retire the VN parts of DOM in favor of the non-iterating RPO-VN code... So - I'd lean to this variant even though it has the extra loop over stmts, would you agree? Bootstrap / regtest running on x86_64-unknown-linux-gnu. Richard. 2019-03-06 Richard Biener PR tree-optimization/89595 * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Take stmt iterator as reference, take boolean output parameter to indicate whether the stmt was removed and thus the iterator already advanced. (dom_opt_dom_walker::before_dom_children): Re-iterate over stmts created by folding. * gcc.dg/torture/pr89595.c: New testcase. --00000000000012ddcd05836a23f3 Content-Type: application/octet-stream; name=fix-pr89595-2 Content-Disposition: attachment; filename=fix-pr89595-2 Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jsx1e3jt0 Content-length: 7540 MjAxOS0wMy0wNiAgUmljaGFyZCBCaWVuZXIgIDxyZ3VlbnRoZXJAc3VzZS5k ZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi84OTU5NQoJKiB0cmVlLXNzYS1k b20uYyAoZG9tX29wdF9kb21fd2Fsa2VyOjpvcHRpbWl6ZV9zdG10KTogVGFr ZQoJc3RtdCBpdGVyYXRvciBhcyByZWZlcmVuY2UsIHRha2UgYm9vbGVhbiBv dXRwdXQgcGFyYW1ldGVyIHRvCglpbmRpY2F0ZSB3aGV0aGVyIHRoZSBzdG10 IHdhcyByZW1vdmVkIGFuZCB0aHVzIHRoZSBpdGVyYXRvcgoJYWxyZWFkeSBh ZHZhbmNlZC4KCShkb21fb3B0X2RvbV93YWxrZXI6OmJlZm9yZV9kb21fY2hp bGRyZW4pOiBSZS1pdGVyYXRlIG92ZXIKCXN0bXRzIGNyZWF0ZWQgYnkgZm9s ZGluZy4KCgkqIGdjYy5kZy90b3J0dXJlL3ByODk1OTUuYzogTmV3IHRlc3Rj YXNlLgoKSW5kZXg6IGdjYy90cmVlLXNzYS1kb20uYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvdHJlZS1zc2EtZG9tLmMJKHJldmlzaW9uIDI2 OTQxMSkKKysrIGdjYy90cmVlLXNzYS1kb20uYwkod29ya2luZyBjb3B5KQpA QCAtNjE4LDcgKzYxOCw3IEBAIHByaXZhdGU6CiAgICAgIHZhcmlvdXMgdGFi bGVzIG1hbnRhaW5lZCBieSBET00uICBSZXR1cm5zIHRoZSB0YWtlbiBlZGdl IGlmCiAgICAgIHRoZSBzdGF0ZW1lbnQgaXMgYSBjb25kaXRpb25hbCB3aXRo IGEgc3RhdGljYWxseSBkZXRlcm1pbmVkCiAgICAgIHZhbHVlLiAgKi8KLSAg ZWRnZSBvcHRpbWl6ZV9zdG10IChiYXNpY19ibG9jaywgZ2ltcGxlX3N0bXRf aXRlcmF0b3IpOworICBlZGdlIG9wdGltaXplX3N0bXQgKGJhc2ljX2Jsb2Nr LCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqLCBib29sICopOwogfTsKIAogLyog SnVtcCB0aHJlYWRpbmcsIHJlZHVuZGFuY3kgZWxpbWluYXRpb24gYW5kIGNv bnN0L2NvcHkgcHJvcGFnYXRpb24uCkBAIC0xNDgwLDEwICsxNDgwLDQ4IEBA IGRvbV9vcHRfZG9tX3dhbGtlcjo6YmVmb3JlX2RvbV9jaGlsZHJlbgogICBt X2F2YWlsX2V4cHJzX3N0YWNrLT5wb3BfdG9fbWFya2VyICgpOwogCiAgIGVk Z2UgdGFrZW5fZWRnZSA9IE5VTEw7CisgIC8qIEluaXRpYWxpemUgdmlzaXRl ZCBmbGFnIGFoZWFkIG9mIHVzLCBpdCBoYXMgdW5kZWZpbmVkIHN0YXRlIG9u CisgICAgIHBhc3MgZW50cnkuICAqLwogICBmb3IgKGdzaSA9IGdzaV9zdGFy dF9iYiAoYmIpOyAhZ3NpX2VuZF9wIChnc2kpOyBnc2lfbmV4dCAoJmdzaSkp CisgICAgZ2ltcGxlX3NldF92aXNpdGVkIChnc2lfc3RtdCAoZ3NpKSwgZmFs c2UpOworICBmb3IgKGdzaSA9IGdzaV9zdGFydF9iYiAoYmIpOyAhZ3NpX2Vu ZF9wIChnc2kpOykKICAgICB7CisgICAgICAvKiBEbyBub3Qgb3B0aW1pemUg YSBzdG10IHR3aWNlLCBzdWJzdGl0dXRpb24gbWlnaHQgZW5kIHVwIHdpdGgK KyAgICAgICAgIF8zID0gXzMgd2hpY2ggaXMgbm90IHZhbGlkLiAgKi8KKyAg ICAgIGlmIChnaW1wbGVfdmlzaXRlZF9wIChnc2lfc3RtdCAoZ3NpKSkpCisJ eworCSAgZ3NpX25leHQgKCZnc2kpOworCSAgY29udGludWU7CisJfQorCisg ICAgICAvKiBDb21wdXRlIHJhbmdlIGluZm9ybWF0aW9uIGFuZCBvcHRpbWl6 ZSB0aGUgc3RtdC4gICovCiAgICAgICBldnJwX3JhbmdlX2FuYWx5emVyLnJl Y29yZF9yYW5nZXNfZnJvbV9zdG10IChnc2lfc3RtdCAoZ3NpKSwgZmFsc2Up OwotICAgICAgdGFrZW5fZWRnZSA9IHRoaXMtPm9wdGltaXplX3N0bXQgKGJi LCBnc2kpOworICAgICAgYm9vbCByZW1vdmVkX3AgPSBmYWxzZTsKKyAgICAg IHRha2VuX2VkZ2UgPSB0aGlzLT5vcHRpbWl6ZV9zdG10IChiYiwgJmdzaSwg JnJlbW92ZWRfcCk7CisgICAgICBpZiAoIXJlbW92ZWRfcCkKKwlnaW1wbGVf c2V0X3Zpc2l0ZWQgKGdzaV9zdG10IChnc2kpLCB0cnVlKTsKKworICAgICAg LyogR28gYmFjayBhbmQgdmlzaXQgc3RtdHMgaW5zZXJ0ZWQgYnkgZm9sZGlu ZyBhZnRlciBzdWJzdGl0dXRpbmcKKwkgaW50byB0aGUgc3RtdCBhdCBnc2ku ICAqLworICAgICAgaWYgKGdzaV9lbmRfcCAoZ3NpKSkKKwl7CisJICBnY2Nf Y2hlY2tpbmdfYXNzZXJ0IChyZW1vdmVkX3ApOworCSAgZ3NpID0gZ3NpX2xh c3RfYmIgKGJiKTsKKwkgIHdoaWxlICghZ3NpX2VuZF9wIChnc2kpICYmICFn aW1wbGVfdmlzaXRlZF9wIChnc2lfc3RtdCAoZ3NpKSkpCisJICAgIGdzaV9w cmV2ICgmZ3NpKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgZG8KKwkgICAg eworCSAgICAgIGdzaV9wcmV2ICgmZ3NpKTsKKwkgICAgfQorCSAgd2hpbGUg KCFnc2lfZW5kX3AgKGdzaSkgJiYgIWdpbXBsZV92aXNpdGVkX3AgKGdzaV9z dG10IChnc2kpKSk7CisJfQorICAgICAgaWYgKGdzaV9lbmRfcCAoZ3NpKSkK Kwlnc2kgPSBnc2lfc3RhcnRfYmIgKGJiKTsKKyAgICAgIGVsc2UKKwlnc2lf bmV4dCAoJmdzaSk7CiAgICAgfQogCiAgIC8qIE5vdyBwcmVwYXJlIHRvIHBy b2Nlc3MgZG9taW5hdGVkIGJsb2Nrcy4gICovCkBAIC0xOTUxLDcgKzE5ODks OCBAQCB0ZXN0X2Zvcl9zaW5ndWxhcml0eSAoZ2ltcGxlICpzdG10LCBnY29u CiAgICAgICBjb25kaXRpb24gdG8gYW4gZXF1YWxpdHkgY29uZGl0aW9uLiAg Ki8KIAogZWRnZQotZG9tX29wdF9kb21fd2Fsa2VyOjpvcHRpbWl6ZV9zdG10 IChiYXNpY19ibG9jayBiYiwgZ2ltcGxlX3N0bXRfaXRlcmF0b3Igc2kpCitk b21fb3B0X2RvbV93YWxrZXI6Om9wdGltaXplX3N0bXQgKGJhc2ljX2Jsb2Nr IGJiLCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqc2ksCisJCQkJICAgYm9vbCAq cmVtb3ZlZF9wKQogewogICBnaW1wbGUgKnN0bXQsICpvbGRfc3RtdDsKICAg Ym9vbCBtYXlfb3B0aW1pemVfcDsKQEAgLTE5NTksNyArMTk5OCw3IEBAIGRv bV9vcHRfZG9tX3dhbGtlcjo6b3B0aW1pemVfc3RtdCAoYmFzaWMKICAgYm9v bCB3YXNfbm9yZXR1cm47CiAgIGVkZ2UgcmV0dmFsID0gTlVMTDsKIAotICBv bGRfc3RtdCA9IHN0bXQgPSBnc2lfc3RtdCAoc2kpOworICBvbGRfc3RtdCA9 IHN0bXQgPSBnc2lfc3RtdCAoKnNpKTsKICAgd2FzX25vcmV0dXJuID0gaXNf Z2ltcGxlX2NhbGwgKHN0bXQpICYmIGdpbXBsZV9jYWxsX25vcmV0dXJuX3Ag KHN0bXQpOwogCiAgIGlmIChkdW1wX2ZpbGUgJiYgKGR1bXBfZmxhZ3MgJiBU REZfREVUQUlMUykpCkBAIC0xOTgyLDkgKzIwMjEsOSBAQCBkb21fb3B0X2Rv bV93YWxrZXI6Om9wdGltaXplX3N0bXQgKGJhc2ljCiAKICAgICAgIC8qIFRy eSB0byBmb2xkIHRoZSBzdGF0ZW1lbnQgbWFraW5nIHN1cmUgdGhhdCBTVE1U IGlzIGtlcHQKIAkgdXAgdG8gZGF0ZS4gICovCi0gICAgICBpZiAoZm9sZF9z dG10ICgmc2kpKQorICAgICAgaWYgKGZvbGRfc3RtdCAoc2kpKQogCXsKLQkg IHN0bXQgPSBnc2lfc3RtdCAoc2kpOworCSAgc3RtdCA9IGdzaV9zdG10ICgq c2kpOwogCSAgZ2ltcGxlX3NldF9tb2RpZmllZCAoc3RtdCwgdHJ1ZSk7CiAK IAkgIGlmIChkdW1wX2ZpbGUgJiYgKGR1bXBfZmxhZ3MgJiBUREZfREVUQUlM UykpCkBAIC0yMDMyLDggKzIwNzEsOCBAQCBkb21fb3B0X2RvbV93YWxrZXI6 Om9wdGltaXplX3N0bXQgKGJhc2ljCiAJICBpZiAoY2FsbGVlCiAJICAgICAg JiYgZm5kZWNsX2J1aWx0X2luX3AgKGNhbGxlZSwgQlVJTFRfSU5fQ09OU1RB TlRfUCkpCiAJICAgIHsKLQkgICAgICBwcm9wYWdhdGVfdHJlZV92YWx1ZV9p bnRvX3N0bXQgKCZzaSwgaW50ZWdlcl96ZXJvX25vZGUpOwotCSAgICAgIHN0 bXQgPSBnc2lfc3RtdCAoc2kpOworCSAgICAgIHByb3BhZ2F0ZV90cmVlX3Zh bHVlX2ludG9fc3RtdCAoc2ksIGludGVnZXJfemVyb19ub2RlKTsKKwkgICAg ICBzdG10ID0gZ3NpX3N0bXQgKCpzaSk7CiAJICAgIH0KIAl9CiAKQEAgLTIw ODksOSArMjEyOCw5IEBAIGRvbV9vcHRfZG9tX3dhbGtlcjo6b3B0aW1pemVf c3RtdCAoYmFzaWMKIAl9CiAKICAgICAgIHVwZGF0ZV9zdG10X2lmX21vZGlm aWVkIChzdG10KTsKLSAgICAgIGVsaW1pbmF0ZV9yZWR1bmRhbnRfY29tcHV0 YXRpb25zICgmc2ksIG1fY29uc3RfYW5kX2NvcGllcywKKyAgICAgIGVsaW1p bmF0ZV9yZWR1bmRhbnRfY29tcHV0YXRpb25zIChzaSwgbV9jb25zdF9hbmRf Y29waWVzLAogCQkJCQltX2F2YWlsX2V4cHJzX3N0YWNrKTsKLSAgICAgIHN0 bXQgPSBnc2lfc3RtdCAoc2kpOworICAgICAgc3RtdCA9IGdzaV9zdG10ICgq c2kpOwogCiAgICAgICAvKiBQZXJmb3JtIHNpbXBsZSByZWR1bmRhbnQgc3Rv cmUgZWxpbWluYXRpb24uICAqLwogICAgICAgaWYgKGdpbXBsZV9hc3NpZ25f c2luZ2xlX3AgKHN0bXQpCkBAIC0yMTE4LDEzICsyMTU3LDE0IEBAIGRvbV9v cHRfZG9tX3dhbGtlcjo6b3B0aW1pemVfc3RtdCAoYmFzaWMKIAkgICAgewog CSAgICAgIGJhc2ljX2Jsb2NrIGJiID0gZ2ltcGxlX2JiIChzdG10KTsKIAkg ICAgICB1bmxpbmtfc3RtdF92ZGVmIChzdG10KTsKLQkgICAgICBpZiAoZ3Np X3JlbW92ZSAoJnNpLCB0cnVlKSkKKwkgICAgICBpZiAoZ3NpX3JlbW92ZSAo c2ksIHRydWUpKQogCQl7CiAJCSAgYml0bWFwX3NldF9iaXQgKG5lZWRfZWhf Y2xlYW51cCwgYmItPmluZGV4KTsKIAkJICBpZiAoZHVtcF9maWxlICYmIChk dW1wX2ZsYWdzICYgVERGX0RFVEFJTFMpKQogCQkgICAgZnByaW50ZiAoZHVt cF9maWxlLCAiICBGbGFnZ2VkIHRvIGNsZWFyIEVIIGVkZ2VzLlxuIik7CiAJ CX0KIAkgICAgICByZWxlYXNlX2RlZnMgKHN0bXQpOworCSAgICAgICpyZW1v dmVkX3AgPSB0cnVlOwogCSAgICAgIHJldHVybiByZXR2YWw7CiAJICAgIH0K IAl9CkluZGV4OiBnY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL3ByODk1 OTUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRl L2djYy5kZy90b3J0dXJlL3ByODk1OTUuYwkobm9uZXhpc3RlbnQpCisrKyBn Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL3ByODk1OTUuYwkod29ya2lu ZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKiB7IGRnLWRvIHJ1biB9ICov CisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZnaW1wbGUiIH0gKi8K KworaW50IF9fYXR0cmlidXRlX18oKG5vaXBhKSkKK19fR0lNUExFKHN0YXJ0 d2l0aCgiZG9tIikpIGJhcihpbnQgY29uZCwgaW50IHZhbCkKK3sKKyAgaW50 IGk7CisKKyAgaWYgKDAgIT0gMCkKKyAgICBnb3RvIGJiXzY7CisgIGVsc2UK KyAgICBnb3RvIGJiXzI7CisKK2JiXzI6CisgIGlmIChjb25kXzUoRCkgIT0g MCkKKyAgICBnb3RvIGJiXzQ7CisgIGVsc2UKKyAgICBnb3RvIGJiXzU7CisK K2JiXzQ6CisgIGlfNiA9IHZhbF8yKEQpOworICBpXzEgPSB2YWxfMihEKSA+ IDAgPyBpXzYgOiAwOworCitiYl81OgorICBpXzMgPSBfX1BISSAoYmJfNDog aV8xLCBiYl8yOiAwKTsKKyAgcmV0dXJuIGlfMzsKKworYmJfNjoKKyAgaV80 ID0gMTsKKyAgaV85ID0gMjsKKyAgZ290byBiYl8yOworfQorCitpbnQgbWFp bigpCit7CisgIGlmIChiYXIgKDEsIDEpICE9IDEpCisgICAgX19idWlsdGlu X2Fib3J0ICgpOworICByZXR1cm4gMDsKK30K --00000000000012ddcd05836a23f3--