From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id E523A3858423 for ; Sat, 2 Oct 2021 19:50:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E523A3858423 Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-588-0N7sQMuaNAyRsFTOCrPw3g-1; Sat, 02 Oct 2021 15:50:26 -0400 X-MC-Unique: 0N7sQMuaNAyRsFTOCrPw3g-1 Received: by mail-lf1-f72.google.com with SMTP id k15-20020a0565123d8f00b003fd266f92abso2702936lfv.20 for ; Sat, 02 Oct 2021 12:50:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=BCXaIE2Y/9wyDnlT+HFGFZ7lubxDZH8MdoKqLk5PiPA=; b=sOemNIC/p1ei5OyVQUFrBvgz1rn3ZnZ3EMFchPBPuSg2irvDWdmegzUHidL5D2bf+a e4jxVnhI9zYMqtGudLSS0AcZGnQA2qaDK4F9ZbeLPkOtzFBHZmZavBdKAt40hO0xEG5g TV+X9Rjtwv08aHFDw5WzSbg64O6E9Rixhc/g4TUazgAr0bG2urX2lIGlY7Co7ic3lsIu ZrcarGa0E6Fv5dYFXJ+RQsYHYKB+QisSCzf7P22/Y+E8f8tQUaV+fFZIdsooLgAemjSP VmBX6E6CwH8ANmh0/nmqRVt9AygVgZmmzZmtCgYm52NilJYlhDTcfmeCGVoTzXxmUrVS bZJg== X-Gm-Message-State: AOAM5313M23T3PJT4CIt9hrUhPIRvsqUNu2gs/7EuZHG0AkwRe1/0lnU yuODEqdGAjXM7xtGYe6qihqAReQ99Rkm41mXS1Hd3qvWpadKv65z/PITHd4ZNbeVZ+2g4O3lM7L 10uF+7wl07CgPx5v2rMVsq6Gqqc2NWz+2Lg== X-Received: by 2002:a2e:7619:: with SMTP id r25mr5380572ljc.439.1633204224985; Sat, 02 Oct 2021 12:50:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxOv7CaDi0YXYZ7KlYZPDcvtQYP1AW1zih4t/5PPvj6PsP7+Nnb1l3kNgBIM2yhpp8dUjFko+ZDiD3HKr3qBlQ= X-Received: by 2002:a2e:7619:: with SMTP id r25mr5380548ljc.439.1633204224671; Sat, 02 Oct 2021 12:50:24 -0700 (PDT) MIME-Version: 1.0 References: <20211001124306.1458223-1-aldyh@redhat.com> <20211001124306.1458223-3-aldyh@redhat.com> In-Reply-To: From: Aldy Hernandez Date: Sat, 2 Oct 2021 21:50:13 +0200 Message-ID: Subject: Re: [PATCH] Handle EQ_EXPR relation for operator_lshift. To: GCC patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000a8780305cd63fdcb" X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Oct 2021 19:50:31 -0000 --000000000000a8780305cd63fdcb Content-Type: text/plain; charset="UTF-8" Bah. The range was being clobbered half way through the calculation. Tested on x86-64 Linux. Pushed. On Fri, Oct 1, 2021 at 4:52 PM Aldy Hernandez wrote: > > Well, after talking with Andrew it seems that X << Y being non-zero > also implies X is non-zero. So we don't even need relationals here. > > So, I leave gori relationals in his capable hands, while I test this > much simpler patch which fixes the PR with no additional > infrastructure ;-). > > Will push pending tests. > Aldy > > On Fri, Oct 1, 2021 at 2:43 PM Aldy Hernandez wrote: > > > > Knowing that X << X is non-zero means X is also non-zero. This patch > > teaches this this to range-ops. > > > > As usual, the big twiddling experts could come up with all sorts of > > fancy enhancements in this area, and we welcome all patches :). > > > > I will push this pending tests. > > > > gcc/ChangeLog: > > > > PR tree-optimization/102546 > > * range-op.cc (operator_lshift::op1_range): Handle EQ_EXPR > > relation. > > --- > > gcc/range-op.cc | 19 ++++++++++++++++--- > > gcc/testsuite/gcc.dg/tree-ssa/pr102546.c | 23 +++++++++++++++++++++++ > > 2 files changed, 39 insertions(+), 3 deletions(-) > > create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr102546.c > > > > diff --git a/gcc/range-op.cc b/gcc/range-op.cc > > index 5e37133026d..53f3be4266e 100644 > > --- a/gcc/range-op.cc > > +++ b/gcc/range-op.cc > > @@ -2075,9 +2075,14 @@ operator_lshift::op1_range (irange &r, > > tree type, > > const irange &lhs, > > const irange &op2, > > - relation_kind rel ATTRIBUTE_UNUSED) const > > + relation_kind rel) const > > { > > tree shift_amount; > > + int_range<2> adjust (type); > > + > > + if (rel == EQ_EXPR && !lhs.contains_p (build_zero_cst (type))) > > + adjust.set_nonzero (type); > > + > > if (op2.singleton_p (&shift_amount)) > > { > > wide_int shift = wi::to_wide (shift_amount); > > @@ -2086,10 +2091,11 @@ operator_lshift::op1_range (irange &r, > > if (wi::ge_p (shift, wi::uhwi (TYPE_PRECISION (type), > > TYPE_PRECISION (op2.type ())), > > UNSIGNED)) > > - return false; > > + goto done; > > if (shift == 0) > > { > > r = lhs; > > + r.intersect (adjust); > > return true; > > } > > > > @@ -2126,9 +2132,16 @@ operator_lshift::op1_range (irange &r, > > > > if (utype != type) > > range_cast (r, type); > > + r.intersect (adjust); > > return true; > > } > > - return false; > > + > > + done: > > + if (adjust.varying_p ()) > > + return false; > > + > > + r = adjust; > > + return true; > > } > > > > bool > > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr102546.c b/gcc/testsuite/gcc.dg/tree-ssa/pr102546.c > > new file mode 100644 > > index 00000000000..4bd98747732 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr102546.c > > @@ -0,0 +1,23 @@ > > +// { dg-do compile } > > +// { dg-options "-O3 -fdump-tree-optimized" } > > + > > +static int a; > > +static char b, c, d; > > +void bar(void); > > +void foo(void); > > + > > +int main() { > > + int f = 0; > > + for (; f <= 5; f++) { > > + bar(); > > + b = b && f; > > + d = f << f; > > + if (!(a >= d || f)) > > + foo(); > > + c = 1; > > + for (; c; c = 0) > > + ; > > + } > > +} > > + > > +// { dg-final { scan-tree-dump-not "foo" "optimized" } } > > -- > > 2.31.1 > > --000000000000a8780305cd63fdcb Content-Type: text/x-patch; charset="US-ASCII"; name="0001-PR102563-Do-not-clobber-range-in-operator_lshift-op1.patch" Content-Disposition: attachment; filename="0001-PR102563-Do-not-clobber-range-in-operator_lshift-op1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kua7lrcp0 RnJvbSA3MjczOWE2ZmRlMDAyMGI5OGNkYWJhZDcyMThjNmQ0ZjVjZTM2YmNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGR5IEhlcm5hbmRleiA8YWxkeWhAcmVkaGF0LmNvbT4KRGF0 ZTogU2F0LCAyIE9jdCAyMDIxIDE2OjU5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW1BSMTAy NTYzXSBEbyBub3QgY2xvYmJlciByYW5nZSBpbgogb3BlcmF0b3JfbHNoaWZ0OjpvcDFfcmFuZ2Uu CgpXZSdyZSBjbG9iYmVyaW5nIHRoZSBmaW5hbCByYW5nZSBiZWZvcmUgd2UncmUgZG9uZSBjYWxj dWxhdGluZyBpdC4KClRlc3RlZCBvbiB4ODYtNjQgTGludXguCgpnY2MvQ2hhbmdlTG9nOgoKCSog cmFuZ2Utb3AuY2MgKG9wZXJhdG9yX2xzaGlmdDo6b3AxX3JhbmdlKTogRG8gbm90IGNsb2JiZXIK CXJhbmdlLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJKiBnY2MuZGcvdHJlZS1zc2EvcHIx MDI1NjMuYzogTmV3IHRlc3QuCi0tLQogZ2NjL3JhbmdlLW9wLmNjICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDEyICsrKysrKy0tLS0tLQogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Ev cHIxMDI1NjMuYyB8IDE2ICsrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5z ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy5kZy90cmVlLXNzYS9wcjEwMjU2My5jCgpkaWZmIC0tZ2l0IGEvZ2NjL3JhbmdlLW9w LmNjIGIvZ2NjL3JhbmdlLW9wLmNjCmluZGV4IDJiYWNhNGExOTdmLi5iYmYyOTI0ZjgxNSAxMDA2 NDQKLS0tIGEvZ2NjL3JhbmdlLW9wLmNjCisrKyBiL2djYy9yYW5nZS1vcC5jYwpAQCAtMjExMiw4 ICsyMTEyLDYgQEAgb3BlcmF0b3JfbHNoaWZ0OjpvcDFfcmFuZ2UgKGlyYW5nZSAmciwKICAgICAg IGVsc2UKIAlvcF9yc2hpZnQuZm9sZF9yYW5nZSAodG1wX3JhbmdlLCB1dHlwZSwgbGhzLCBvcDIp OwogCi0gICAgICByLmludGVyc2VjdCAodG1wX3JhbmdlKTsKLQogICAgICAgLy8gU3RhcnQgd2l0 aCByYW5nZXMgd2hpY2ggY2FuIHByb2R1Y2UgdGhlIExIUyBieSByaWdodCBzaGlmdGluZyB0aGUK ICAgICAgIC8vIHJlc3VsdCBieSB0aGUgc2hpZnQgYW1vdW50LgogICAgICAgLy8gaWUgICBbMHgw OCwgMHhGMF0gPSBvcDEgPDwgMiB3aWxsIHN0YXJ0IHdpdGgKQEAgLTIxMjgsMTMgKzIxMjYsMTUg QEAgb3BlcmF0b3JfbHNoaWZ0OjpvcDFfcmFuZ2UgKGlyYW5nZSAmciwKICAgICAgIHVuc2lnbmVk IGxvd19iaXRzID0gVFlQRV9QUkVDSVNJT04gKHV0eXBlKQogCQkJICAtIFRSRUVfSU5UX0NTVF9M T1cgKHNoaWZ0X2Ftb3VudCk7CiAgICAgICB3aWRlX2ludCB1cF9tYXNrID0gd2k6Om1hc2sgKGxv d19iaXRzLCB0cnVlLCBUWVBFX1BSRUNJU0lPTiAodXR5cGUpKTsKLSAgICAgIHdpZGVfaW50IG5l d191YiA9IHdpOjpiaXRfb3IgKHVwX21hc2ssIHIudXBwZXJfYm91bmQgKCkpOwotICAgICAgd2lk ZV9pbnQgbmV3X2xiID0gd2k6OnNldF9iaXQgKHIubG93ZXJfYm91bmQgKCksIGxvd19iaXRzKTsK KyAgICAgIHdpZGVfaW50IG5ld191YiA9IHdpOjpiaXRfb3IgKHVwX21hc2ssIHRtcF9yYW5nZS51 cHBlcl9ib3VuZCAoKSk7CisgICAgICB3aWRlX2ludCBuZXdfbGIgPSB3aTo6c2V0X2JpdCAodG1w X3JhbmdlLmxvd2VyX2JvdW5kICgpLCBsb3dfYml0cyk7CiAgICAgICBpbnRfcmFuZ2U8Mj4gZmls bF9yYW5nZSAodXR5cGUsIG5ld19sYiwgbmV3X3ViKTsKLSAgICAgIHIudW5pb25fIChmaWxsX3Jh bmdlKTsKKyAgICAgIHRtcF9yYW5nZS51bmlvbl8gKGZpbGxfcmFuZ2UpOwogCiAgICAgICBpZiAo dXR5cGUgIT0gdHlwZSkKLQlyYW5nZV9jYXN0IChyLCB0eXBlKTsKKwlyYW5nZV9jYXN0ICh0bXBf cmFuZ2UsIHR5cGUpOworCisgICAgICByLmludGVyc2VjdCAodG1wX3JhbmdlKTsKICAgICAgIHJl dHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJl ZS1zc2EvcHIxMDI1NjMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMTAyNTYz LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg4NzFkZmZlMjRhCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIxMDI1NjMu YwpAQCAtMCwwICsxLDE2IEBACisvLyB7IGRnLWRvIGNvbXBpbGUgfQorLy8geyBkZy1vcHRpb25z ICItTzIgLXciIH0KKworaW50IF9iZGZfcGFyc2VfZ2x5cGhzX2JwOworbG9uZyBfYmRmX3BhcnNl X2dseXBoc19uaWJibGVzOworCit2b2lkIF9iZGZfcGFyc2VfZ2x5cGhzX3AoKSAKK3sKKyAgbG9u ZyBwXzI7CisKKyAgX2JkZl9wYXJzZV9nbHlwaHNfbmliYmxlcyA9IHBfMiA8PCAxOworCisgIGZv ciAoOyAwIDwgX2JkZl9wYXJzZV9nbHlwaHNfbmliYmxlczspCisgICAgaWYgKDEgPCBfYmRmX3Bh cnNlX2dseXBoc19uaWJibGVzKQorICAgICAgX2JkZl9wYXJzZV9nbHlwaHNfYnAgPSBfYmRmX3Bh cnNlX2dseXBoc19wOworfQotLSAKMi4zMS4xCgo= --000000000000a8780305cd63fdcb--