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 070153858292 for ; Tue, 5 Jul 2022 17:43:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 070153858292 Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-207-3kbCG9KvMRev9VcIBb4FrQ-1; Tue, 05 Jul 2022 13:43:43 -0400 X-MC-Unique: 3kbCG9KvMRev9VcIBb4FrQ-1 Received: by mail-qk1-f197.google.com with SMTP id bm2-20020a05620a198200b006a5dac37fa2so12122262qkb.16 for ; Tue, 05 Jul 2022 10:43:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:cc:from:subject; bh=QEWCZMsy+8VaQ8DNhqq9Y5jNZNwlUZtEozuD4nhli7A=; b=WflLfPGjUx6linPZ3CjgfdKMMSsffHPLmg0qj2TKnFqljIAnNmbjDlLW5kIXlHsfp7 jPVYvw5lSkOpLFuXLLy9CCow1lZkUuU0UpJ9JILpaZzS4yqmuYIpkDWPfuiBeW739RFz TbLL07Pw4CJgd7SviloqdIgD33dgr5kt2Kfq7XXnsR8LvdjDQXNVewy4t/02qW8Hrov7 3TiIqb9AWnThAhGe9COxlemN+NgfgkJrMsZDJYtDC0NCLpWVAqVreZEP2v9/WHVY0XDS IED3BcfUYyzuy4XtbjPOUFS+MCDgRxjigboDF/St1ZnaO5TSuf6kTLERGSFCOY93i31e i4yA== X-Gm-Message-State: AJIora9HYmIQOAUQ3oI1RKJZ/2kYiAper7FRiLO3FJTbUbgILwrKhhbp aOolnbGTm7EFokoePwGLe7aodINsHqJCM206l43KxQQIBLCMa0V8/oCGDuUpeVkhj+Ms93/kxC0 lvceFAb6sPEf7B6QlCFy0591RYfTf1KX93pj439L567Hq9aN+VmXvqILtO2bCLSucx6nvHA== X-Received: by 2002:a05:622a:183:b0:31d:2639:af02 with SMTP id s3-20020a05622a018300b0031d2639af02mr29007874qtw.377.1657043022490; Tue, 05 Jul 2022 10:43:42 -0700 (PDT) X-Google-Smtp-Source: AGRyM1u9xY9BnfqZpclRd/tnC5BH8b0EJ9tEtm57lEFDbzYbnPtRoHQ6AQQ9H3PQ+k8gxMwVqFGp5g== X-Received: by 2002:a05:622a:183:b0:31d:2639:af02 with SMTP id s3-20020a05622a018300b0031d2639af02mr29007858qtw.377.1657043022140; Tue, 05 Jul 2022 10:43:42 -0700 (PDT) Received: from [192.168.0.102] ([104.219.127.152]) by smtp.gmail.com with ESMTPSA id g19-20020ac87d13000000b00307aed25fc7sm23918995qtb.31.2022.07.05.10.43.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 05 Jul 2022 10:43:41 -0700 (PDT) Message-ID: <1bc05212-1258-2c0f-bf57-65e11bbeb919@redhat.com> Date: Tue, 5 Jul 2022 13:43:39 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 To: gcc-patches From: Andrew MacLeod Subject: [COMMITTED] Provide a relation verification mechanism. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------RPB0P0pyVUfWojMV0XTuT01S" Content-Language: en-CA X-Spam-Status: No, score=-12.8 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, T_SCC_BODY_TEXT_LINE 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, 05 Jul 2022 17:43:46 -0000 This is a multi-part message in MIME format. --------------RPB0P0pyVUfWojMV0XTuT01S Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit the relation oracle works on a purely symbolic basis. It assumes for instance that x == x, along with everything in the equivalency set. With the coming introduction of floating point ranges, we have circumstances beyond the symbol relation which can affect the result.  If the range of X may contain a NaN, then  x != x. Within ranger, folding these sorts of things is not much of an issue.  For x == x when we invoke fold_range (==, range x, range x, VREL_EQ) that will be dispatched to the floating point version of operator_equal() which first checks if either operand has a Nan, and if so, ignores the incoming equality relation. Although there are no current clients of the relation oracle outside of ranger, I see the potential need for a mechanism to validate any relation returned by the oracle with specific ranges or ssa-names.  I don't *THINK* we need this within ranger yet, but haven't been able to convince myself 100% yet :-). This patch adds 2 new API entry points to the oracle:   relation_kind validate_relation (relation_kind k, tree ssa1, tree ssa2);   relation_kind validate_relation (relation_kind k, vrange &op1, vrange &op2); They basically do what ranger currently does, takes the relation and checks to see if folding the appropriate expression with the relation returns the expected [1, 1] ie  it tries folding     fold_range (r, EQ_EXPR, op1, op2, VREL_EQ)  and returns either VREL_EQ if the result is [1, 1], or VREL_VARYING otherwise.  so if op1 or op2 had a NaN, then we'd get VREL_VARYING .   The ssa-name version simply uses a value of VARYING of the approrate type. Anyway, Ive tested it on all the integer code by having the oracle always validate any relation it returns. which bootstraps with no regressions on 86_64-pc-linux-gnu. The default I have checked in does not actually call these new routines.  but they are there when we need them now. Andrew PS. It also allows x == x to be registered to the oracle, which use to trap for no really good reason. --------------RPB0P0pyVUfWojMV0XTuT01S Content-Type: text/x-patch; charset=UTF-8; name="0001-Provide-a-relation-verification-mechanism.patch" Content-Disposition: attachment; filename="0001-Provide-a-relation-verification-mechanism.patch" Content-Transfer-Encoding: base64 RnJvbSAxZDJhYTI2MjQ4MmZjOWIyMzIwMTIwMGNhODJhYTNiODY1OWIwNzJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogVHVlLCA1IEp1bCAyMDIyIDEwOjU0OjI2IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gUHJv dmlkZSBhIHJlbGF0aW9uIHZlcmlmaWNhdGlvbiBtZWNoYW5pc20uCgpQcm92aWRlIGEgcmVsYXRp b24gb3JhY2xlIEFQSSB3aGljaCB2YWxpZGF0ZXMgYSByZWxhdGlvbiBiZXR3ZWVuIDIgcmFuZ2Vz LgpUaGlzIGFsbG93cyByZWxhdGlvbiBxdWVyaWVzIHRoYXQgYXJlIHN5bWJvbGljbHkgdHJ1ZSB0 byBiZSBvdmVycmlkZGVuCmJ5IHJhbmdlIHNwZWNpZmljIGluZm9ybWF0aW9uLiAgaWUuIHggPT0g eCBpcyB0cnVlIHN5bWJvbGljYWxseSwgYnV0IGZvcgpmbG9hdGluZyBwb2ludCBhIE5hTiBtYXkg aW52YWxpZGF0ZSB0aGlzIGFzc3VtcHRpb24uCgoJKiB2YWx1ZS1yZWxhdGlvbi5jYyAocmVsYXRp b25fdG9fY29kZSk6IE5ldyB2ZWN0b3IuCgkocmVsYXRpb25fb3JhY2xlOjp2YWxpZGF0ZV9yZWxh dGlvbik6IE5ldy4KCShzZXRfcmVsYXRpb24pOiBBbGxvdyBzc2ExID09IHNzYTIgdG8gYmUgcmVn aXN0ZXJlZC4KCSogdmFsdWUtcmVsYXRpb24uaCAodmFsaWRhdGVfcmVsYXRpb24pOiBOZXcgcHJv dG90eXBlLgoJKHF1ZXJ5X3JlbGF0aW9uKTogTWFrZSBpbnRlcm5hbCB2YXJpYW50IHByb3RlY3Rl ZC4KLS0tCiBnY2MvdmFsdWUtcmVsYXRpb24uY2MgfCA3MCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tCiBnY2MvdmFsdWUtcmVsYXRpb24uaCAgfCAxMCArKysrKy0t CiAyIGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZ2NjL3ZhbHVlLXJlbGF0aW9uLmNjIGIvZ2NjL3ZhbHVlLXJlbGF0aW9uLmNjCmlu ZGV4IDg1ZDE1OWY1ZDk2Li4xM2NlNDQxOTlmNyAxMDA2NDQKLS0tIGEvZ2NjL3ZhbHVlLXJlbGF0 aW9uLmNjCisrKyBiL2djYy92YWx1ZS1yZWxhdGlvbi5jYwpAQCAtMTg0LDYgKzE4NCw3MSBAQCBy ZWxhdGlvbl90cmFuc2l0aXZlIChyZWxhdGlvbl9raW5kIHIxLCByZWxhdGlvbl9raW5kIHIyKQog ICByZXR1cm4gcnJfdHJhbnNpdGl2ZV90YWJsZVtyMV1bcjJdOwogfQogCisvLyBUaGlzIHZlY3Rv ciBtYXBzIGEgcmVsYXRpb24gdG8gdGhlIGVxdWl2YWxlbnQgdHJlZSBjb2RlLgorCit0cmVlX2Nv ZGUgcmVsYXRpb25fdG9fY29kZSBbVlJFTF9MQVNUICsgMV0gPSB7CisgIEVSUk9SX01BUkssIEVS Uk9SX01BUkssIExUX0VYUFIsIExFX0VYUFIsIEdUX0VYUFIsIEdFX0VYUFIsIEVRX0VYUFIsCisg IE5FX0VYUFIgfTsKKworLy8gVGhpcyByb3V0aW5lIHZhbGlkYXRlcyB0aGF0IGEgcmVsYXRpb24g Y2FuIGJlIGFwcGxpZWQgdG8gYSBzcGVjaWZpYyBzZXQgb2YKKy8vIHJhbmdlcy4gIEluIHBhcnRp Y3VsYXIsIGZsb2F0aW5nIHBvaW50IHggPT0geCBtYXkgbm90IGJlIHRydWUgaWYgdGhlIE5hTiBi aXQKKy8vIGlzIHNldCBpbiB0aGUgcmFuZ2UuICBTeW1ib2xpY2FsbHkgdGhlIG9yYWNsZSB3aWxs IGRldGVybWluZSB4ID09IHgsCisvLyBidXQgc3BlY2lmaWMgcmFuZ2UgaW5zdGFuY2VzIG1heSBv dmVycmlkZSB0aGlzLgorLy8gVG8gdmVyaWZ5LCBhdHRlbXB0IHRvIGZvbGQgdGhlIHJlbGF0aW9u IHVzaW5nIHRoZSBzdXBwbGllZCByYW5nZXMuCisvLyBPbmUgd291bGQgZXhwZWN0IFsxLDFdIHRv IGJlIHJldHVybmVkLCBhbnl0aGluZyBlbHNlIG1lYW5zIHRoZXJlIGlzIHNvbWV0aGluZworLy8g aW4gdGhlIHJhbmdlIHByZXZlbnRpbmcgdGhlIHJlbGF0aW9uIGZyb20gYXBwbHlpbmcuCisvLyBJ ZiB0aGVyZSBpcyBubyBtZWNoYW5pc20gdG8gdmVyaWZ5LCBhc3N1bWUgdGhlIHJlbGF0aW9uIGlz IGFjY2VwdGFibGUuCisKK3JlbGF0aW9uX2tpbmQKK3JlbGF0aW9uX29yYWNsZTo6dmFsaWRhdGVf cmVsYXRpb24gKHJlbGF0aW9uX2tpbmQgcmVsLCB2cmFuZ2UgJm9wMSwgdnJhbmdlICZvcDIpCit7 CisgIC8vIElmIHRoZXJlIGlzIG5vIG1hcHBpbmcgdG8gYSB0cmVlIGNvZGUsIGxlYXZlIHRoZSBy ZWxhdGlvbiBhcyBpcy4KKyAgdHJlZV9jb2RlIGNvZGUgPSByZWxhdGlvbl90b19jb2RlIFtyZWxd OworICBpZiAoY29kZSA9PSBFUlJPUl9NQVJLKQorICAgIHJldHVybiByZWw7CisKKyAgLy8gVW5k ZWZpbmVkIHJhbmdlcyBjYW5ub3QgYmUgY2hlY2tlZCBlaXRoZXIuCisgIGlmIChvcDEudW5kZWZp bmVkX3AgKCkgfHwgb3AyLnVuZGVmaW5lZF9wICgpKQorICAgIHJldHVybiByZWw7CisKKyAgdHJl ZSB0MSA9IG9wMS50eXBlICgpOworICB0cmVlIHQyID0gb3AyLnR5cGUgKCk7CisKKyAgLy8gSWYg dGhlIHJhbmdlIHR5cGVzIGFyZSBub3QgY29tcGF0aWJsZSwgbm8gcmVsYXRpb24gY2FuIGV4aXN0 LgorICBpZiAoIXJhbmdlX2NvbXBhdGlibGVfcCAodDEsIHQyKSkKKyAgICByZXR1cm4gVlJFTF9W QVJZSU5HOworCisgIC8vIElmIHRoZXJlIGlzIG5vIGhhbmRsZXIsIGxlYXZlIHRoZSByZWxhdGlv biBhcyBpcy4KKyAgcmFuZ2Vfb3BfaGFuZGxlciBoYW5kbGVyIChjb2RlLCB0MSk7CisgIGlmICgh aGFuZGxlcikKKyAgICByZXR1cm4gcmVsOworCisgIC8vIElmIHRoZSByZWxhdGlvbiBjYW5ub3Qg YmUgZm9sZGVkIGZvciBhbnkgcmVhc29uLCBsZWF2ZSBhcyBpcy4KKyAgVmFsdWVfUmFuZ2UgcmVz dWx0IChib29sZWFuX3R5cGVfbm9kZSk7CisgIGlmICghaGFuZGxlci5mb2xkX3JhbmdlIChyZXN1 bHQsIGJvb2xlYW5fdHlwZV9ub2RlLCBvcDEsIG9wMiwgcmVsKSkKKyAgICByZXR1cm4gcmVsOwor CisgIC8vIFRoZSBleHByZXNzaW9uIG9wMSBSRUwgb3AyIHVzaW5nIFJFTCBzaG91bGQgZm9sZCB0 byBbMSwxXS4KKyAgLy8gQW55IG90aGVyIHJlc3VsdCBtZWFucyB0aGUgcmVsYXRpb24gaXMgbm90 IHZlcmlmaWVkIHRvIGJlIHRydWUuCisgIGlmIChyZXN1bHQudmFyeWluZ19wICgpIHx8IHJlc3Vs dC56ZXJvX3AgKCkpCisgICAgcmV0dXJuIFZSRUxfVkFSWUlORzsKKworICByZXR1cm4gcmVsOwor fQorCisvLyBJZiBubyByYW5nZSBpcyBhdmFpbGFibGUsIGNyZWF0ZSBhIHZhcnlpbmcgcmFuZ2Ug Zm9yIGVhY2ggU1NBIG5hbWUgYW5kCisvLyB2ZXJpZnkuCisKK3JlbGF0aW9uX2tpbmQKK3JlbGF0 aW9uX29yYWNsZTo6dmFsaWRhdGVfcmVsYXRpb24gKHJlbGF0aW9uX2tpbmQgcmVsLCB0cmVlIHNz YTEsIHRyZWUgc3NhMikKK3sKKyAgVmFsdWVfUmFuZ2Ugb3AxLCBvcDI7CisgIG9wMS5zZXRfdmFy eWluZyAoVFJFRV9UWVBFIChzc2ExKSk7CisgIG9wMi5zZXRfdmFyeWluZyAoVFJFRV9UWVBFIChz c2EyKSk7CisKKyAgcmV0dXJuIHZhbGlkYXRlX3JlbGF0aW9uIChyZWwsIG9wMSwgb3AyKTsKK30K KwogLy8gR2l2ZW4gYW4gZXF1aXZhbGVuY2Ugc2V0IEVRVUlWLCBzZXQgYWxsIHRoZSBiaXRzIGlu IEIgdGhhdCBhcmUgc3RpbGwgdmFsaWQKIC8vIG1lbWJlcnMgb2YgRVFVSVYgaW4gYmFzaWMgYmxv Y2sgQkIuCiAKQEAgLTYwMiw3ICs2NjcsOCBAQCBwcml2YXRlOgogaW5saW5lIHZvaWQKIHZhbHVl X3JlbGF0aW9uOjpzZXRfcmVsYXRpb24gKHJlbGF0aW9uX2tpbmQgciwgdHJlZSBuMSwgdHJlZSBu MikKIHsKLSAgZ2NjX2NoZWNraW5nX2Fzc2VydCAoU1NBX05BTUVfVkVSU0lPTiAobjEpICE9IFNT QV9OQU1FX1ZFUlNJT04gKG4yKSk7CisgIGdjY19jaGVja2luZ19hc3NlcnQgKFNTQV9OQU1FX1ZF UlNJT04gKG4xKSAhPSBTU0FfTkFNRV9WRVJTSU9OIChuMikKKwkJICAgICAgIHx8IHIgPT0gVlJF TF9FUSk7CiAgIHJlbGF0ZWQgPSByOwogICBuYW1lMSA9IG4xOwogICBuYW1lMiA9IG4yOwpAQCAt MTE5OSw3ICsxMjY1LDcgQEAgZG9tX29yYWNsZTo6cXVlcnlfcmVsYXRpb24gKGJhc2ljX2Jsb2Nr IGJiLCB0cmVlIHNzYTEsIHRyZWUgc3NhMikKICAgaWYgKGtpbmQgIT0gVlJFTF9WQVJZSU5HKQog ICAgIHJldHVybiBraW5kOwogCi0gIC8vIFF1ZXJ5IHVzaW5nIHRoZSBlcXVpb3ZhbGVuY2Ugc2V0 cy4KKyAgLy8gUXVlcnkgdXNpbmcgdGhlIGVxdWl2YWxlbmNlIHNldHMuCiAgIGtpbmQgPSBxdWVy eV9yZWxhdGlvbiAoYmIsIGVxdWl2MSwgZXF1aXYyKTsKICAgcmV0dXJuIGtpbmQ7CiB9CmRpZmYg LS1naXQgYS9nY2MvdmFsdWUtcmVsYXRpb24uaCBiL2djYy92YWx1ZS1yZWxhdGlvbi5oCmluZGV4 IDQ3ODcyOWJlMGJmLi43N2UxMjA4NWVlYSAxMDA2NDQKLS0tIGEvZ2NjL3ZhbHVlLXJlbGF0aW9u LmgKKysrIGIvZ2NjL3ZhbHVlLXJlbGF0aW9uLmgKQEAgLTk1LDE1ICs5NSwxOSBAQCBwdWJsaWM6 CiAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlcl9yZWxhdGlvbiAoYmFzaWNfYmxvY2ssIHJlbGF0aW9u X2tpbmQsIHRyZWUsIHRyZWUpID0gMDsKICAgLy8gUXVlcnkgZm9yIGEgcmVsYXRpb24gYmV0d2Vl biB0d28gc3NhIG5hbWVzIGluIGEgYmFzaWMgYmxvY2suCiAgIHZpcnR1YWwgcmVsYXRpb25fa2lu ZCBxdWVyeV9yZWxhdGlvbiAoYmFzaWNfYmxvY2ssIHRyZWUsIHRyZWUpID0gMDsKLSAgLy8gUXVl cnkgZm9yIGEgcmVsYXRpb24gYmV0d2VlbiB0d28gZXF1aXZhbGVuY3kgc3RlcyBpbiBhIGJhc2lj IGJsb2NrLgotICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgcXVlcnlfcmVsYXRpb24gKGJhc2ljX2Js b2NrLCBjb25zdF9iaXRtYXAsCi0JCQkJCWNvbnN0X2JpdG1hcCkgPSAwOworCisgIHJlbGF0aW9u X2tpbmQgdmFsaWRhdGVfcmVsYXRpb24gKHJlbGF0aW9uX2tpbmQsIHRyZWUsIHRyZWUpOworICBy ZWxhdGlvbl9raW5kIHZhbGlkYXRlX3JlbGF0aW9uIChyZWxhdGlvbl9raW5kLCB2cmFuZ2UgJiwg dnJhbmdlICYpOwogCiAgIHZpcnR1YWwgdm9pZCBkdW1wIChGSUxFICosIGJhc2ljX2Jsb2NrKSBj b25zdCA9IDA7CiAgIHZpcnR1YWwgdm9pZCBkdW1wIChGSUxFICopIGNvbnN0ID0gMDsKICAgdm9p ZCBkZWJ1ZyAoKSBjb25zdDsKIHByb3RlY3RlZDoKICAgdm9pZCB2YWxpZF9lcXVpdnMgKGJpdG1h cCBiLCBjb25zdF9iaXRtYXAgZXF1aXZzLCBiYXNpY19ibG9jayBiYik7CisgIC8vIFF1ZXJ5IGZv ciBhIHJlbGF0aW9uIGJldHdlZW4gdHdvIGVxdWl2YWxlbmN5IHNldHMgaW4gYSBiYXNpYyBibG9j ay4KKyAgdmlydHVhbCByZWxhdGlvbl9raW5kIHF1ZXJ5X3JlbGF0aW9uIChiYXNpY19ibG9jaywg Y29uc3RfYml0bWFwLAorCQkJCQljb25zdF9iaXRtYXApID0gMDsKKyAgZnJpZW5kIGNsYXNzIHBh dGhfb3JhY2xlOwogfTsKIAogLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuIGVxdWl2YWxlbmN5 IHNldCwgYW5kIGNvbnRhaW5zIGEgbGluayB0byB0aGUgbmV4dAotLSAKMi4xNy4yCgo= --------------RPB0P0pyVUfWojMV0XTuT01S--