From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10564 invoked by alias); 17 Jun 2017 07:36:00 -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 10457 invoked by uid 89); 17 Jun 2017 07:35:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-9.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,KAM_LAZY_DOMAIN_SECURITY,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=H*r:rev.sfr.net, kids, H*c:HHHH X-HELO: mail2-relais-roc.national.inria.fr Received: from mail2-relais-roc.national.inria.fr (HELO mail2-relais-roc.national.inria.fr) (192.134.164.83) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 17 Jun 2017 07:35:55 +0000 Received: from 91.70.140.77.rev.sfr.net (HELO stedding) ([77.140.70.91]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 17 Jun 2017 09:35:57 +0200 Date: Sat, 17 Jun 2017 07:36:00 -0000 From: Marc Glisse To: gcc-patches@gcc.gnu.org Subject: Prevent infinite recursion between simplification and CSE in FRE Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-317619809-1497684957=:6123" X-SW-Source: 2017-06/txt/msg01253.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-317619809-1497684957=:6123 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Content-length: 979 Hello, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80887#c10 for the context. FRE can go into an infinite recursion with some match.pd simplifications (that have been temporarily reverted). Limiting the depth of recursive calls is not a great solution, but it is simple and I don't have a good idea for an alternate solution that does not disable a lot of desirable optimizations. There are many ways to write the limiter, I went with depth_limiter d; if (d > 100) return false; but I could also have written the class so the use would look like depth_limiter d(100); if (!d) return false; for instance. 100 was picked arbitrarily, I don't think it is worth having a param for it, but we could certainly use a different value. Bootstrap and testsuite on powerpc64le-unknown-linux-gnu. 2017-06-19 Marc Glisse * gimple-match-head.c (depth_limiter): New class. * genmatch.c (decision_tree::gen): Use it. -- Marc Glisse --8323329-317619809-1497684957=:6123 Content-Type: TEXT/x-diff; name=count.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: inline; filename=count.patch Content-length: 2514 SW5kZXg6IGdjYy9nZW5tYXRjaC5jDQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQotLS0gZ2NjL2dlbm1hdGNoLmMJKHJldmlzaW9uIDI0OTI3NykNCisrKyBn Y2MvZ2VubWF0Y2guYwkod29ya2luZyBjb3B5KQ0KQEAgLTM2ODQsMjEgKzM2 ODQsMjUgQEAgZGVjaXNpb25fdHJlZTo6Z2VuIChGSUxFICpmLCBib29sIGdp bXBsZQ0KIAkJICIgICAgICAgICAgICAgICAgIGdpbXBsZV9zZXEgKnNlcSwg dHJlZSAoKnZhbHVlaXplKSh0cmVlKSxcbiINCiAJCSAiICAgICAgICAgICAg ICAgICBjb2RlX2hlbHBlciBjb2RlLCB0cmVlIHR5cGUiKTsNCiAgICAgICBl bHNlDQogCWZwcmludGYgKGYsICJcbnRyZWVcbiINCiAJCSAiZ2VuZXJpY19z aW1wbGlmeSAobG9jYXRpb25fdCBsb2MsIGVudW0gdHJlZV9jb2RlIGNvZGUs ICINCiAJCSAidHJlZSB0eXBlIEFUVFJJQlVURV9VTlVTRUQiKTsNCiAgICAg ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQ0KIAlmcHJpbnRm IChmLCAiLCB0cmVlIG9wJWQiLCBpKTsNCiAgICAgICBmcHJpbnRmIChmLCAi KVxuIik7DQogICAgICAgZnByaW50ZiAoZiwgIntcbiIpOw0KLQ0KKyAgICAg IGlmIChnaW1wbGUpDQorCXsNCisJICBmcHJpbnRmIChmLCAiICBkZXB0aF9s aW1pdGVyIGQ7XG4iKTsNCisJICBmcHJpbnRmIChmLCAiICBpZiAoZCA+IDEw MCkgcmV0dXJuIGZhbHNlO1xuIik7DQorCX0NCiAgICAgICBpZiAoZ2ltcGxl KQ0KIAlmcHJpbnRmIChmLCAiICBzd2l0Y2ggKGNvZGUuZ2V0X3JlcCgpKVxu Ig0KIAkJICIgICAge1xuIik7DQogICAgICAgZWxzZQ0KIAlmcHJpbnRmIChm LCAiICBzd2l0Y2ggKGNvZGUpXG4iDQogCQkgIiAgICB7XG4iKTsNCiAgICAg ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcm9vdC0+a2lkcy5sZW5ndGgg KCk7IGkrKykNCiAJew0KIAkgIGR0X29wZXJhbmQgKmRvcCA9IHN0YXRpY19j YXN0PGR0X29wZXJhbmQgKj4ocm9vdC0+a2lkc1tpXSk7DQogCSAgZXhwciAq ZSA9IHN0YXRpY19jYXN0PGV4cHIgKj4oZG9wLT5vcCk7DQpJbmRleDogZ2Nj L2dpbXBsZS1tYXRjaC1oZWFkLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBnY2MvZ2ltcGxlLW1hdGNoLWhlYWQuYwkocmV2aXNpb24gMjQ5Mjc3 KQ0KKysrIGdjYy9naW1wbGUtbWF0Y2gtaGVhZC5jCSh3b3JraW5nIGNvcHkp DQpAQCAtODA4LDEwICs4MDgsMjIgQEAgc2luZ2xlX3VzZSAodHJlZSB0KQ0K IH0NCiANCiAvKiBSZXR1cm4gdHJ1ZSBpZiBtYXRoIG9wZXJhdGlvbnMgc2hv dWxkIGJlIGNhbm9uaWNhbGl6ZWQsDQogICAgZS5nLiBzcXJ0KHNxcnQoeCkp IC0+IHBvdyh4LCAwLjI1KS4gICovDQogDQogc3RhdGljIGlubGluZSBib29s DQogY2Fub25pY2FsaXplX21hdGhfcCAoKQ0KIHsNCiAgIHJldHVybiAhY2Z1 biB8fCAoY2Z1bi0+Y3Vycl9wcm9wZXJ0aWVzICYgUFJPUF9naW1wbGVfb3B0 X21hdGgpID09IDA7DQogfQ0KKw0KKy8qIFNpbXBsZSB3YXkgdG8gcHJldmVu dCBpbmZpbml0ZSByZWN1cnNpb24gaW4gc2ltcGxpZmljYXRpb24uICAqLw0K K25hbWVzcGFjZSB7DQorICBzdHJ1Y3QgZGVwdGhfbGltaXRlcg0KKyAgew0K KyAgICBzdGF0aWMgaW50IGRlcHRoOw0KKyAgICBvcGVyYXRvciBpbnQgKCkg Y29uc3QgeyByZXR1cm4gZGVwdGg7IH0NCisgICAgZGVwdGhfbGltaXRlciAo KSB7ICsrZGVwdGg7IH0NCisgICAgfmRlcHRoX2xpbWl0ZXIgKCkgeyAtLWRl cHRoOyB9DQorICB9Ow0KKyAgaW50IGRlcHRoX2xpbWl0ZXI6OmRlcHRoID0g MDsNCit9DQo= --8323329-317619809-1497684957=:6123--