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.129.124]) by sourceware.org (Postfix) with ESMTPS id 8F4B83857C5C for ; Tue, 2 Aug 2022 11:40:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8F4B83857C5C Received: from mail-ot1-f72.google.com (mail-ot1-f72.google.com [209.85.210.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-651-UnEBUOWBNpelvp0ff8LVbQ-1; Tue, 02 Aug 2022 07:40:56 -0400 X-MC-Unique: UnEBUOWBNpelvp0ff8LVbQ-1 Received: by mail-ot1-f72.google.com with SMTP id f95-20020a9d03e8000000b0061c75d3deaaso5934013otf.12 for ; Tue, 02 Aug 2022 04:40:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=oY67s4X8Op5on0xW4lwHyfwLSZisBKYnOsf6GkK8h14=; b=JVj3jMJjVH8aScaLKiO6lIqv9EZQE0gSPIo/Vf3l3hPQQtNErfYfflBPzkqxOtllXN 2w1tAeXSBbg4IWZpzb8fj/J1bezyA0NhNrGYjMF0eZo6NpPT0uDn4GC+KZdx2NsIqYD+ acrxqnaO/uQd9al1L+d8PFv906MoHQSUVV1IeSeg601putRDjwnAUmEMuxqgj+OcWQlm hl7/w4LKpKl1gqbMeXgyYZFacCTf348g65c9yoQtsVdEoCshw/L47+S+2fyYY6WcLznM UacLE6CyCn4RcbqqVTevCBXY/9e4cNWZbm5Hx8HgAgvrapNsFnn+YmoMtogMmXZC/u69 U43Q== X-Gm-Message-State: AJIora9kBRx/ZtZbNkG3LX6qJy2K/ZdgOi3B9AVGwkCR4xmsNDUC895B MGOVaoMuWkfjYcL66CttLBmvAoHs7yDa70nuPzQVq57syMtzxdpWUrzshRSM20BQBqBAYkhTRbB ibGdCJO+IjL4Ho17JG1uVTqD9XAkIn9oNvA== X-Received: by 2002:a05:6870:b617:b0:10d:f7ce:50df with SMTP id cm23-20020a056870b61700b0010df7ce50dfmr9663099oab.36.1659440455990; Tue, 02 Aug 2022 04:40:55 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vYA3Ww5NnGK08r7/5QwOVwwQuGy31MHIPcNul+gdJiSY/J0CkRAae9oL3xizikhdPhdXP3fDhBEd3cy6sTfFo= X-Received: by 2002:a05:6870:b617:b0:10d:f7ce:50df with SMTP id cm23-20020a056870b61700b0010df7ce50dfmr9663088oab.36.1659440455332; Tue, 02 Aug 2022 04:40:55 -0700 (PDT) MIME-Version: 1.0 References: <20220801061540.229684-1-aldyh@redhat.com> In-Reply-To: From: Aldy Hernandez Date: Tue, 2 Aug 2022 13:40:44 +0200 Message-ID: Subject: Re: [COMMITTED] Make irange dependency explicit for range_of_ssa_name_with_loop_info. To: Richard Biener , "MacLeod, Andrew" Cc: GCC patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000e4e56105e5409651" X-Spam-Status: No, score=-12.1 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, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Tue, 02 Aug 2022 11:41:00 -0000 --000000000000e4e56105e5409651 Content-Type: text/plain; charset="UTF-8" On Tue, Aug 2, 2022 at 9:19 AM Richard Biener wrote: > > On Mon, Aug 1, 2022 at 8:17 AM Aldy Hernandez via Gcc-patches > wrote: > > > > Even though ranger is type agnostic, SCEV seems to only work with > > integers. This patch removes some FIXME notes making it explicit that > > bounds_of_var_in_loop only works with iranges. > > SCEV also handles floats, where do you see this failing? Yes, support is > somewhat limited, but still. Oh, it does? We could convert range_of_ssa_name_with_loop_info to the type agnostic vrange if so... (see attached untested patch). I'm looking at the testcase for 24021 with the attached patch, and bounds_of_var_in_loop() is returning false because SCEV couldn't figure out the direction of the loop: dir = scev_direction (chrec); if (/* Do not adjust ranges if we do not know whether the iv increases or decreases, ... */ dir == EV_DIR_UNKNOWN /* ... or if it may wrap. */ || scev_probably_wraps_p (NULL_TREE, init, step, stmt, get_chrec_loop (chrec), true)) return false; The chrec in question is rather simple... a loop increasing by 0.01: (gdb) p debug(chrec) {1.00000000000000002081668171172168513294309377670288085938e-2, +, 1.00000001490116119384765625e-1}_1 I also see that bounds_of_var_in_loop() calls niter's max_loop_iterations(), which if I understand things correctly, bails at several points if the step is not integral. I'd be happy to adapt our code, if SCEV can give me useful information. Aldy --000000000000e4e56105e5409651 Content-Type: text/x-patch; charset="US-ASCII"; name="0009-Make-range_of_ssa_name_with_loop_info-type-agnostic.patch" Content-Disposition: attachment; filename="0009-Make-range_of_ssa_name_with_loop_info-type-agnostic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l6c3l1qe0 RnJvbSA4Njc1MmJiNTdiMDUzNGI0OTZiNTE1NTllYzhlMjhlNTZmYjNlYTRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGR5IEhlcm5hbmRleiA8YWxkeWhAcmVkaGF0LmNvbT4KRGF0 ZTogVHVlLCAyIEF1ZyAyMDIyIDEzOjI3OjE2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gTWFrZSBy YW5nZV9vZl9zc2FfbmFtZV93aXRoX2xvb3BfaW5mbyB0eXBlIGFnbm9zdGljLgoKZ2NjL0NoYW5n ZUxvZzoKCgkqIGdpbXBsZS1yYW5nZS1mb2xkLmNjIChmb2xkX3VzaW5nX3JhbmdlOjpyYW5nZV9v Zl9waGkpOiBSZW1vdmUKCWlyYW5nZSBjaGVjay4KCSh0cmVlX2xvd2VyX2JvdW5kKTogTmV3LgoJ KHRyZWVfdXBwZXJfYm91bmQpOiBOZXcuCgkoZm9sZF91c2luZ19yYW5nZTo6cmFuZ2Vfb2Zfc3Nh X25hbWVfd2l0aF9sb29wX2luZm8pOiBDb252ZXJ0IHRvCgl2cmFuZ2UuCgkqIGdpbXBsZS1yYW5n ZS1mb2xkLmggKHJhbmdlX29mX3NzYV9uYW1lX3dpdGhfbG9vcF9pbmZvKTogQ2hhbmdlCglhcmd1 bWVudCB0byB2cmFuZ2UuCi0tLQogZ2NjL2dpbXBsZS1yYW5nZS1mb2xkLmNjIHwgNDYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogZ2NjL2dpbXBsZS1yYW5nZS1mb2xk LmggIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS1mb2xkLmNjIGIvZ2NjL2dpbXBs ZS1yYW5nZS1mb2xkLmNjCmluZGV4IDc2NjVjOTU0ZjJiLi45MjMwOTRhYmQ2MiAxMDA2NDQKLS0t IGEvZ2NjL2dpbXBsZS1yYW5nZS1mb2xkLmNjCisrKyBiL2djYy9naW1wbGUtcmFuZ2UtZm9sZC5j YwpAQCAtODU0LDEzICs4NTQsMTIgQEAgZm9sZF91c2luZ19yYW5nZTo6cmFuZ2Vfb2ZfcGhpICh2 cmFuZ2UgJnIsIGdwaGkgKnBoaSwgZnVyX3NvdXJjZSAmc3JjKQogCiAgIC8vIElmIFNDRVYgaXMg YXZhaWxhYmxlLCBxdWVyeSBpZiB0aGlzIFBISSBoYXMgYW55IGtub253biB2YWx1ZXMuCiAgIGlm IChzY2V2X2luaXRpYWxpemVkX3AgKCkKLSAgICAgICYmICFQT0lOVEVSX1RZUEVfUCAoVFJFRV9U WVBFIChwaGlfZGVmKSkKLSAgICAgICYmIGlyYW5nZTo6c3VwcG9ydHNfcCAoVFJFRV9UWVBFIChw aGlfZGVmKSkpCisgICAgICAmJiAhUE9JTlRFUl9UWVBFX1AgKFRSRUVfVFlQRSAocGhpX2RlZikp KQogICAgIHsKICAgICAgIGNsYXNzIGxvb3AgKmwgPSBsb29wX2NvbnRhaW5pbmdfc3RtdCAocGhp KTsKICAgICAgIGlmIChsICYmIGxvb3Bfb3V0ZXIgKGwpKQogCXsKLQkgIGludF9yYW5nZV9tYXgg bG9vcF9yYW5nZTsKKwkgIFZhbHVlX1JhbmdlIGxvb3BfcmFuZ2UgKHR5cGUpOwogCSAgcmFuZ2Vf b2Zfc3NhX25hbWVfd2l0aF9sb29wX2luZm8gKGxvb3BfcmFuZ2UsIHBoaV9kZWYsIGwsIHBoaSwg c3JjKTsKIAkgIGlmICghbG9vcF9yYW5nZS52YXJ5aW5nX3AgKCkpCiAJICAgIHsKQEAgLTEzMzAs MTAgKzEzMjksMzIgQEAgZm9sZF91c2luZ19yYW5nZTo6cmFuZ2Vfb2ZfY29uZF9leHByICAodnJh bmdlICZyLCBnYXNzaWduICpzLCBmdXJfc291cmNlICZzcmMpCiAgIHJldHVybiB0cnVlOwogfQog CisvLyBSZXR1cm4gdGhlIGxvd2VyIGJvdW5kIG9mIFIgYXMgYSB0cmVlLgorCitzdGF0aWMgaW5s aW5lIHRyZWUKK3RyZWVfbG93ZXJfYm91bmQgKGNvbnN0IHZyYW5nZSAmciwgdHJlZSB0eXBlKQor eworICBpZiAoaXNfYSA8aXJhbmdlPiAocikpCisgICAgcmV0dXJuIHdpZGVfaW50X3RvX3RyZWUg KHR5cGUsIGFzX2EgPGlyYW5nZT4gKHIpLmxvd2VyX2JvdW5kICgpKTsKKyAgLy8gPz8gSGFuZGxl IGZsb2F0cyB3aGVuIHRoZXkgY29udGFpbiBlbmRwb2ludHMuCisgIHJldHVybiBOVUxMOworfQor CisvLyBSZXR1cm4gdGhlIHVwcGVyIGJvdW5kIG9mIFIgYXMgYSB0cmVlLgorCitzdGF0aWMgaW5s aW5lIHRyZWUKK3RyZWVfdXBwZXJfYm91bmQgKGNvbnN0IHZyYW5nZSAmciwgdHJlZSB0eXBlKQor eworICBpZiAoaXNfYSA8aXJhbmdlPiAocikpCisgICAgcmV0dXJuIHdpZGVfaW50X3RvX3RyZWUg KHR5cGUsIGFzX2EgPGlyYW5nZT4gKHIpLnVwcGVyX2JvdW5kICgpKTsKKyAgLy8gPz8gSGFuZGxl IGZsb2F0cyB3aGVuIHRoZXkgY29udGFpbiBlbmRwb2ludHMuCisgIHJldHVybiBOVUxMOworfQor CiAvLyBJZiBTQ0VWIGhhcyBhbnkgaW5mb3JtYXRpb24gYWJvdXQgcGhpIG5vZGUgTkFNRSwgcmV0 dXJuIGl0IGFzIGEgcmFuZ2UgaW4gUi4KIAogdm9pZAotZm9sZF91c2luZ19yYW5nZTo6cmFuZ2Vf b2Zfc3NhX25hbWVfd2l0aF9sb29wX2luZm8gKGlyYW5nZSAmciwgdHJlZSBuYW1lLAorZm9sZF91 c2luZ19yYW5nZTo6cmFuZ2Vfb2Zfc3NhX25hbWVfd2l0aF9sb29wX2luZm8gKHZyYW5nZSAmciwg dHJlZSBuYW1lLAogCQkJCQkJICAgIGNsYXNzIGxvb3AgKmwsIGdwaGkgKnBoaSwKIAkJCQkJCSAg ICBmdXJfc291cmNlICZzcmMpCiB7CkBAIC0xMzQxLDI0ICsxMzYyLDI3IEBAIGZvbGRfdXNpbmdf cmFuZ2U6OnJhbmdlX29mX3NzYV9uYW1lX3dpdGhfbG9vcF9pbmZvIChpcmFuZ2UgJnIsIHRyZWUg bmFtZSwKICAgdHJlZSBtaW4sIG1heCwgdHlwZSA9IFRSRUVfVFlQRSAobmFtZSk7CiAgIGlmIChi b3VuZHNfb2ZfdmFyX2luX2xvb3AgKCZtaW4sICZtYXgsIHNyYy5xdWVyeSAoKSwgbCwgcGhpLCBu YW1lKSkKICAgICB7Ci0gICAgICBpZiAoVFJFRV9DT0RFIChtaW4pICE9IElOVEVHRVJfQ1NUKQor ICAgICAgaWYgKCFpc19naW1wbGVfY29uc3RhbnQgKG1pbikpCiAJewogCSAgaWYgKHNyYy5xdWVy eSAoKS0+cmFuZ2Vfb2ZfZXhwciAociwgbWluLCBwaGkpICYmICFyLnVuZGVmaW5lZF9wICgpKQot CSAgICBtaW4gPSB3aWRlX2ludF90b190cmVlICh0eXBlLCByLmxvd2VyX2JvdW5kICgpKTsKKwkg ICAgbWluID0gdHJlZV9sb3dlcl9ib3VuZCAociwgdHlwZSk7CiAJICBlbHNlCiAJICAgIG1pbiA9 IHZycF92YWxfbWluICh0eXBlKTsKIAl9Ci0gICAgICBpZiAoVFJFRV9DT0RFIChtYXgpICE9IElO VEVHRVJfQ1NUKQorICAgICAgaWYgKCFpc19naW1wbGVfY29uc3RhbnQgKG1heCkpCiAJewogCSAg aWYgKHNyYy5xdWVyeSAoKS0+cmFuZ2Vfb2ZfZXhwciAociwgbWF4LCBwaGkpICYmICFyLnVuZGVm aW5lZF9wICgpKQotCSAgICBtYXggPSB3aWRlX2ludF90b190cmVlICh0eXBlLCByLnVwcGVyX2Jv dW5kICgpKTsKKwkgICAgbWF4ID0gdHJlZV91cHBlcl9ib3VuZCAociwgdHlwZSk7CiAJICBlbHNl CiAJICAgIG1heCA9IHZycF92YWxfbWF4ICh0eXBlKTsKIAl9Ci0gICAgICByLnNldCAobWluLCBt YXgpOworICAgICAgaWYgKG1pbiAmJiBtYXgpCisJeworCSAgci5zZXQgKG1pbiwgbWF4KTsKKwkg IHJldHVybjsKKwl9CiAgICAgfQotICBlbHNlCi0gICAgci5zZXRfdmFyeWluZyAodHlwZSk7Cisg IHIuc2V0X3ZhcnlpbmcgKHR5cGUpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0 IGEvZ2NjL2dpbXBsZS1yYW5nZS1mb2xkLmggYi9nY2MvZ2ltcGxlLXJhbmdlLWZvbGQuaAppbmRl eCBmYmY2NjI3NWY3NC4uYzJmMzgxZGZmZWMgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtcmFuZ2Ut Zm9sZC5oCisrKyBiL2djYy9naW1wbGUtcmFuZ2UtZm9sZC5oCkBAIC0xNzMsNyArMTczLDcgQEAg cHJvdGVjdGVkOgogICB2b2lkIHJhbmdlX29mX2J1aWx0aW5fdWJzYW5fY2FsbCAoaXJhbmdlICZy LCBnY2FsbCAqY2FsbCwgdHJlZV9jb2RlIGNvZGUsCiAJCQkJICAgIGZ1cl9zb3VyY2UgJnNyYyk7 CiAgIGJvb2wgcmFuZ2Vfb2ZfcGhpICh2cmFuZ2UgJnIsIGdwaGkgKnBoaSwgZnVyX3NvdXJjZSAm c3JjKTsKLSAgdm9pZCByYW5nZV9vZl9zc2FfbmFtZV93aXRoX2xvb3BfaW5mbyAoaXJhbmdlICYs IHRyZWUsIGNsYXNzIGxvb3AgKiwgZ3BoaSAqLAorICB2b2lkIHJhbmdlX29mX3NzYV9uYW1lX3dp dGhfbG9vcF9pbmZvICh2cmFuZ2UgJiwgdHJlZSwgY2xhc3MgbG9vcCAqLCBncGhpICosCiAJCQkJ CSBmdXJfc291cmNlICZzcmMpOwogICB2b2lkIHJlbGF0aW9uX2ZvbGRfYW5kX29yIChpcmFuZ2Um IGxoc19yYW5nZSwgZ2ltcGxlICpzLCBmdXJfc291cmNlICZzcmMpOwogfTsKLS0gCjIuMzcuMQoK --000000000000e4e56105e5409651--