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 ESMTPS id 4F3D43839DE9 for ; Thu, 29 Sep 2022 22:36:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4F3D43839DE9 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664490966; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=kceb0/X0qj+pqNJAwynPI59UKdE8/H7nJgPzvLbGWpA=; b=TR9bDGqhIc8vng+BGebRhCX267AcLA8iMjdw9+UhElBGrYU+WMmvht9KxQ6lgTwnrus+I1 KVNdf5mvMGDyVmDDV3GhFIs9M8Tn6Llo9bBAxjQfAQ7V8rs7j5r4y5o8oBWsVqFj4BTYJE JZEOW/q0GbbBE9kDmiKLptwGsFePB80= Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-502-Qs5xasvuOqKYAA5PhpZ2Iw-1; Thu, 29 Sep 2022 18:36:04 -0400 X-MC-Unique: Qs5xasvuOqKYAA5PhpZ2Iw-1 Received: by mail-qv1-f69.google.com with SMTP id h14-20020a0cf8ce000000b004af8dccd6ccso1865473qvo.19 for ; Thu, 29 Sep 2022 15:36:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date; bh=MlzHSoOEZuBhWKBeQ+6sm5RQn4PP0CURIkrelnzBFh0=; b=UugoRYf7r3xI8enW3buXvDjxH+HWG1h2Eo6TLLbBNuty7jjLBq+FUbcRHJL7A6Mvlf cwU8wzTiNNq/mhNl6kf9pDZ13P7Si6nh6uLfSy6CTw2HAeY76+QKl9UHMugTceFuCXRp sa7G47YlT2qE1nRAQS6xT71brO3oSlfPvRHHzqqZkJP4TUUzOr4oWF9mcFaGYJ8glqDE udJzxi1KU3kVMSXvRIVbXfd0MQoh0ToiXiaVAa70Y1N+KiBU/co2sr751gMYrdyEvl8W A8DC+dvfwAqsf3tRTq4eb3PXEEfdMDklRl3M4NQhKI0QngHvTLtMbcyWKqUGM3mGSH5E KDCw== X-Gm-Message-State: ACrzQf09bpj3D2esv1rIL7UC+WnpSBEfKVNk/er9dnf1Q4mrEKeeAGGe Ag/9RunjfaTvQTZSA/FTN8EGBKcdlbLVFdUkuDcTLovE9IbfMkGV54CyYq2etCbhawJPvEY0nvJ MVTfkHVVEGfqXt8DyvOLqNdYexjWX23myodCzaPnv/q+pZNTTfHyOAMfFxFw+G6a9y7StTw== X-Received: by 2002:a05:622a:510:b0:35d:50dd:3062 with SMTP id l16-20020a05622a051000b0035d50dd3062mr4423983qtx.437.1664490963837; Thu, 29 Sep 2022 15:36:03 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5yaT5RAIER8osljQIFU4g5ufp5tJFeNfTtZKf/aOKUkcE+sYNS5VNCrBwvZi2rVTnQb946Rw== X-Received: by 2002:a05:622a:510:b0:35d:50dd:3062 with SMTP id l16-20020a05622a051000b0035d50dd3062mr4423964qtx.437.1664490963536; Thu, 29 Sep 2022 15:36:03 -0700 (PDT) Received: from ?IPV6:2607:fea8:a263:f600::3dbe? ([2607:fea8:a263:f600::3dbe]) by smtp.gmail.com with ESMTPSA id q19-20020a37f713000000b006bba46e5eeasm585148qkj.37.2022.09.29.15.36.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Sep 2022 15:36:02 -0700 (PDT) Message-ID: Date: Thu, 29 Sep 2022 18:36:01 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [PATCH] Track value_relations in GORI. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------0uoLII3nNats4GrEypNI3BQi" Content-Language: en-US X-Spam-Status: No, score=-12.5 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_NONE,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 List-Id: This is a multi-part message in MIME format. --------------0uoLII3nNats4GrEypNI3BQi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit This patch allows GORI to recognize and pass relations along the calculation chain.  This will allow relations between the LHS and the operand being calculated to be utilized in op1_range and op2_range. compute_operand_range will look to see if the current statement creates a relation between op1 and op2, and if it does, creates a relation record and a passes it down to the next routine. Ie: [0,0] = a_1 < b_2 would create a relation record for (a_1 >= b2) and pass it along the calculation chain to the various op1/op2 ranges for use in their calculations.  This patch merely creates and passes it around, it doesn't actually do anything with it yet. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew --------------0uoLII3nNats4GrEypNI3BQi Content-Type: text/x-patch; charset=UTF-8; name="0004-Track-value_relations-in-GORI.patch" Content-Disposition: attachment; filename="0004-Track-value_relations-in-GORI.patch" Content-Transfer-Encoding: base64 RnJvbSBlYzgwYWRmNDE3M2YzNjI2ZTZjNzkzMWE5YzFiYTNmNzYwY2IyMzY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogVGh1LCAyMiBTZXAgMjAyMiAxNzo1NTo1NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggNC82 XSBUcmFjayB2YWx1ZV9yZWxhdGlvbnMgaW4gR09SSS4KClRoaXMgYWxsb3dzIEdPUkkgdG8gcmVj b2duaXplIGFuZCBwYXNzIHJlbGF0aW9ucyBhbG9uZyB0aGUgY2FsY3VsYXRpb24gY2hhaW4uClRo aXMgd2lsbCBhbGxvdyByZWxhdGlvbnMgYmV0d2VlbiB0aGUgTEhTIGFuZCB0aGUgb3BlcmFuZCBi ZWluZyBjYWxjdWxhdGVkCnRvIGJlIHV0aWxpemVkIGluIG9wMV9yYW5nZSBhbmQgb3AyX3Jhbmdl LgoKCSogZ2ltcGxlLXJhbmdlLWdvcmkuY2MgKG9yaV9jb21wdXRlOjpjb21wdXRlX29wZXJhbmRf cmFuZ2UpOgoJQ3JlYXRlIGEgcmVsYXRpb24gcmVjb3JkIGFuZCBwYXNzIGl0IGFsb25nIHdoZW4g cG9zc2libGUuCgkoZ29yaV9jb21wdXRlOjpjb21wdXRlX29wZXJhbmQxX3JhbmdlKTogUGFzcyBy ZWxhdGlvbiBhbG9uZy4KCShnb3JpX2NvbXB1dGU6OmNvbXB1dGVfb3BlcmFuZDJfcmFuZ2UpOiBE aXR0by4KCShnb3JpX2NvbXB1dGU6OmNvbXB1dGVfb3BlcmFuZDFfYW5kX29wZXJhbmQyX3Jhbmdl KTogRGl0dG8uCgkqIGdpbXBsZS1yYW5nZS1nb3JpLmggKGNsYXNzIGdvcmlfY29tcHV0ZSk6IEFk anVzdCBwcm90b3R5cGVzLgoJKiBnaW1wbGUtcmFuZ2Utb3AuY2MgKGdpbXBsZV9yYW5nZV9vcF9o YW5kbGVyOjpjYWxjX29wMSk6IFBhc3MKCXJlbGF0aW9uIHRvIG9wMV9yYW5nZSBjYWxsLgoJKGdp bXBsZV9yYW5nZV9vcF9oYW5kbGVyOjpjYWxjX29wMik6IFBhc3MgcmVsYXRpb24gdG8gb3AyX3Jh bmdlIGNhbGwuCgkqIGdpbXBsZS1yYW5nZS1vcC5oIChjbGFzcyBnaW1wbGVfcmFuZ2Vfb3BfaGFu ZGxlcik6IEFkanVzdAoJcHJvdG90eXBlcy4KLS0tCiBnY2MvZ2ltcGxlLXJhbmdlLWdvcmkuY2Mg fCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBnY2MvZ2ltcGxl LXJhbmdlLWdvcmkuaCAgfCAxNCArKysrKysrKysrLS0tLQogZ2NjL2dpbXBsZS1yYW5nZS1vcC5j YyAgIHwgMTIgKysrKysrLS0tLS0tCiBnY2MvZ2ltcGxlLXJhbmdlLW9wLmggICAgfCAgNiArKysr LS0KIDQgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS1nb3JpLmNjIGIvZ2NjL2dpbXBsZS1yYW5nZS1n b3JpLmNjCmluZGV4IDQwYjJmMmY2YWU5Li41N2E3ZTgyMDc0OSAxMDA2NDQKLS0tIGEvZ2NjL2dp bXBsZS1yYW5nZS1nb3JpLmNjCisrKyBiL2djYy9naW1wbGUtcmFuZ2UtZ29yaS5jYwpAQCAtNjAz LDggKzYwMywxMCBAQCBnb3JpX2NvbXB1dGU6OmNvbXB1dGVfb3BlcmFuZF9yYW5nZV9zd2l0Y2gg KHZyYW5nZSAmciwgZ3N3aXRjaCAqcywKIGJvb2wKIGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVy YW5kX3JhbmdlICh2cmFuZ2UgJnIsIGdpbXBsZSAqc3RtdCwKIAkJCQkgICAgIGNvbnN0IHZyYW5n ZSAmbGhzLCB0cmVlIG5hbWUsCi0JCQkJICAgICBmdXJfc291cmNlICZzcmMpCisJCQkJICAgICBm dXJfc291cmNlICZzcmMsIHZhbHVlX3JlbGF0aW9uICpyZWwpCiB7CisgIHZhbHVlX3JlbGF0aW9u IHZyZWw7CisgIHZhbHVlX3JlbGF0aW9uICp2cmVsX3B0ciA9IHJlbDsKICAgLy8gSWYgdGhlIGxo cyBkb2Vzbid0IHRlbGwgdXMgYW55dGhpbmcsIG5laXRoZXIgd2lsbCB1bndpbmRpbmcgZnVydGhl ci4KICAgaWYgKGxocy52YXJ5aW5nX3AgKCkpCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI1LDEx ICs2MjcsMjMgQEAgZ29yaV9jb21wdXRlOjpjb21wdXRlX29wZXJhbmRfcmFuZ2UgKHZyYW5nZSAm ciwgZ2ltcGxlICpzdG10LAogICB0cmVlIG9wMSA9IGdpbXBsZV9yYW5nZV9zc2FfcCAoaGFuZGxl ci5vcGVyYW5kMSAoKSk7CiAgIHRyZWUgb3AyID0gZ2ltcGxlX3JhbmdlX3NzYV9wIChoYW5kbGVy Lm9wZXJhbmQyICgpKTsKIAorICAvLyBJZiB0aGVyZSBpcyBhIHJlbGF0aW9uLCB1c2UgaXQgaW5z dGVhZCBvZiBhbnkgcGFzc2VkIGluLiAgVGhpcyB3aWxsIGFsbG93CisgIC8vIG11bHRpcGxlIHJl bGF0aW9ucyB0byBiZSBwcm9jZXNzZWQgaW4gY29tcG91bmQgbG9naWNhbHMuCisgIGlmIChvcDEg JiYgb3AyKQorICAgIHsKKyAgICAgIHJlbGF0aW9uX2tpbmQgayA9IGhhbmRsZXIub3AxX29wMl9y ZWxhdGlvbiAobGhzKTsKKyAgICAgIGlmIChrICE9IFZSRUxfVkFSWUlORykKKyAgICAgICB7CisJ IHZyZWwuc2V0X3JlbGF0aW9uIChrLCBvcDEsIG9wMik7CisJIHZyZWxfcHRyID0gJnZyZWw7Cisg ICAgICAgfQorICAgIH0KKwogICAvLyBIYW5kbGUgZW5kIG9mIGxvb2t1cCBmaXJzdC4KICAgaWYg KG9wMSA9PSBuYW1lKQotICAgIHJldHVybiBjb21wdXRlX29wZXJhbmQxX3JhbmdlIChyLCBoYW5k bGVyLCBsaHMsIG5hbWUsIHNyYyk7CisgICAgcmV0dXJuIGNvbXB1dGVfb3BlcmFuZDFfcmFuZ2Ug KHIsIGhhbmRsZXIsIGxocywgbmFtZSwgc3JjLCB2cmVsX3B0cik7CiAgIGlmIChvcDIgPT0gbmFt ZSkKLSAgICByZXR1cm4gY29tcHV0ZV9vcGVyYW5kMl9yYW5nZSAociwgaGFuZGxlciwgbGhzLCBu YW1lLCBzcmMpOworICAgIHJldHVybiBjb21wdXRlX29wZXJhbmQyX3JhbmdlIChyLCBoYW5kbGVy LCBsaHMsIG5hbWUsIHNyYywgdnJlbF9wdHIpOwogCiAgIC8vIE5BTUUgaXMgbm90IGluIHRoaXMg c3RtdCwgYnV0IG9uZSBvZiB0aGUgbmFtZXMgaW4gaXQgb3VnaHQgdG8gYmUKICAgLy8gZGVyaXZl ZCBmcm9tIGl0LgpAQCAtNjcyLDExICs2ODYsMTIgQEAgZ29yaV9jb21wdXRlOjpjb21wdXRlX29w ZXJhbmRfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxlICpzdG10LAogICAgIH0KICAgLy8gRm9sbG93 IHRoZSBhcHByb3ByaWF0ZSBvcGVyYW5kcyBub3cuCiAgIGVsc2UgaWYgKG9wMV9pbl9jaGFpbiAm JiBvcDJfaW5fY2hhaW4pCi0gICAgcmVzID0gY29tcHV0ZV9vcGVyYW5kMV9hbmRfb3BlcmFuZDJf cmFuZ2UgKHIsIGhhbmRsZXIsIGxocywgbmFtZSwgc3JjKTsKKyAgICByZXMgPSBjb21wdXRlX29w ZXJhbmQxX2FuZF9vcGVyYW5kMl9yYW5nZSAociwgaGFuZGxlciwgbGhzLCBuYW1lLCBzcmMsCisJ CQkJCSAgICAgICB2cmVsX3B0cik7CiAgIGVsc2UgaWYgKG9wMV9pbl9jaGFpbikKLSAgICByZXMg PSBjb21wdXRlX29wZXJhbmQxX3JhbmdlIChyLCBoYW5kbGVyLCBsaHMsIG5hbWUsIHNyYyk7Cisg ICAgcmVzID0gY29tcHV0ZV9vcGVyYW5kMV9yYW5nZSAociwgaGFuZGxlciwgbGhzLCBuYW1lLCBz cmMsIHZyZWxfcHRyKTsKICAgZWxzZSBpZiAob3AyX2luX2NoYWluKQotICAgIHJlcyA9IGNvbXB1 dGVfb3BlcmFuZDJfcmFuZ2UgKHIsIGhhbmRsZXIsIGxocywgbmFtZSwgc3JjKTsKKyAgICByZXMg PSBjb21wdXRlX29wZXJhbmQyX3JhbmdlIChyLCBoYW5kbGVyLCBsaHMsIG5hbWUsIHNyYywgdnJl bF9wdHIpOwogICBlbHNlCiAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwogCkBAIC05MjcsNyArOTQy LDcgQEAgYm9vbAogZ29yaV9jb21wdXRlOjpjb21wdXRlX29wZXJhbmQxX3JhbmdlICh2cmFuZ2Ug JnIsCiAJCQkJICAgICAgZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXIgJmhhbmRsZXIsCiAJCQkJICAg ICAgY29uc3QgdnJhbmdlICZsaHMsIHRyZWUgbmFtZSwKLQkJCQkgICAgICBmdXJfc291cmNlICZz cmMpCisJCQkJICAgICAgZnVyX3NvdXJjZSAmc3JjLCB2YWx1ZV9yZWxhdGlvbiAqcmVsKQogewog ICBnaW1wbGUgKnN0bXQgPSBoYW5kbGVyLnN0bXQgKCk7CiAgIHRyZWUgb3AxID0gaGFuZGxlci5v cGVyYW5kMSAoKTsKQEAgLTk5OCw3ICsxMDEzLDcgQEAgZ29yaV9jb21wdXRlOjpjb21wdXRlX29w ZXJhbmQxX3JhbmdlICh2cmFuZ2UgJnIsCiAgIGdjY19jaGVja2luZ19hc3NlcnQgKHNyY19zdG10 KTsKIAogICAvLyBUaGVuIGZlZWQgdGhpcyByYW5nZSBiYWNrIGFzIHRoZSBMSFMgb2YgdGhlIGRl ZmluaW5nIHN0YXRlbWVudC4KLSAgcmV0dXJuIGNvbXB1dGVfb3BlcmFuZF9yYW5nZSAociwgc3Jj X3N0bXQsIG9wMV9yYW5nZSwgbmFtZSwgc3JjKTsKKyAgcmV0dXJuIGNvbXB1dGVfb3BlcmFuZF9y YW5nZSAociwgc3JjX3N0bXQsIG9wMV9yYW5nZSwgbmFtZSwgc3JjLCByZWwpOwogfQogCiAKQEAg LTEwMTAsNyArMTAyNSw3IEBAIGJvb2wKIGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVyYW5kMl9y YW5nZSAodnJhbmdlICZyLAogCQkJCSAgICAgIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyICZoYW5k bGVyLAogCQkJCSAgICAgIGNvbnN0IHZyYW5nZSAmbGhzLCB0cmVlIG5hbWUsCi0JCQkJICAgICAg ZnVyX3NvdXJjZSAmc3JjKQorCQkJCSAgICAgIGZ1cl9zb3VyY2UgJnNyYywgdmFsdWVfcmVsYXRp b24gKnJlbCkKIHsKICAgZ2ltcGxlICpzdG10ID0gaGFuZGxlci5zdG10ICgpOwogICB0cmVlIG9w MSA9IGhhbmRsZXIub3BlcmFuZDEgKCk7CkBAIC0xMDcwLDcgKzEwODUsNyBAQCBnb3JpX2NvbXB1 dGU6OmNvbXB1dGVfb3BlcmFuZDJfcmFuZ2UgKHZyYW5nZSAmciwKIC8vICBnY2NfY2hlY2tpbmdf YXNzZXJ0ICghaXNfaW1wb3J0X3AgKG9wMiwgZmluZC5iYikpOwogCiAgIC8vIFRoZW4gZmVlZCB0 aGlzIHJhbmdlIGJhY2sgYXMgdGhlIExIUyBvZiB0aGUgZGVmaW5pbmcgc3RhdGVtZW50LgotICBy ZXR1cm4gY29tcHV0ZV9vcGVyYW5kX3JhbmdlIChyLCBzcmNfc3RtdCwgb3AyX3JhbmdlLCBuYW1l LCBzcmMpOworICByZXR1cm4gY29tcHV0ZV9vcGVyYW5kX3JhbmdlIChyLCBzcmNfc3RtdCwgb3Ay X3JhbmdlLCBuYW1lLCBzcmMsIHJlbCk7CiB9CiAKIC8vIENhbGN1bGF0ZSBhIHJhbmdlIGZvciBO QU1FIGZyb20gYm90aCBvcGVyYW5kIHBvc2l0aW9ucyBvZiBTCkBAIC0xMDgzLDE3ICsxMDk4LDE4 IEBAIGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVyYW5kMV9hbmRfb3BlcmFuZDJfcmFuZ2UgKHZy YW5nZSAmciwKIAkJCQkJCQkJICAgICAmaGFuZGxlciwKIAkJCQkJCSAgIGNvbnN0IHZyYW5nZSAm bGhzLAogCQkJCQkJICAgdHJlZSBuYW1lLAotCQkJCQkJICAgZnVyX3NvdXJjZSAmc3JjKQorCQkJ CQkJICAgZnVyX3NvdXJjZSAmc3JjLAorCQkJCQkJICAgdmFsdWVfcmVsYXRpb24gKnJlbCkKIHsK ICAgVmFsdWVfUmFuZ2Ugb3BfcmFuZ2UgKFRSRUVfVFlQRSAobmFtZSkpOwogCiAgIC8vIENhbGN1 bGF0ZSBhIGdvb2QgYSByYW5nZSBmb3Igb3AyLiAgU2luY2Ugb3AxID09IG9wMiwgdGhpcyB3aWxs CiAgIC8vIGhhdmUgYWxyZWFkeSBpbmNsdWRlZCB3aGF0ZXZlciB0aGUgYWN0dWFsIHJhbmdlIG9m IG5hbWUgaXMuCi0gIGlmICghY29tcHV0ZV9vcGVyYW5kMl9yYW5nZSAob3BfcmFuZ2UsIGhhbmRs ZXIsIGxocywgbmFtZSwgc3JjKSkKKyAgaWYgKCFjb21wdXRlX29wZXJhbmQyX3JhbmdlIChvcF9y YW5nZSwgaGFuZGxlciwgbGhzLCBuYW1lLCBzcmMsIHJlbCkpCiAgICAgcmV0dXJuIGZhbHNlOwog CiAgIC8vIE5vdyBnZXQgdGhlIHJhbmdlIHRocnUgb3AxLgotICBpZiAoIWNvbXB1dGVfb3BlcmFu ZDFfcmFuZ2UgKHIsIGhhbmRsZXIsIGxocywgbmFtZSwgc3JjKSkKKyAgaWYgKCFjb21wdXRlX29w ZXJhbmQxX3JhbmdlIChyLCBoYW5kbGVyLCBsaHMsIG5hbWUsIHNyYywgcmVsKSkKICAgICByZXR1 cm4gZmFsc2U7CiAKICAgLy8gQm90aCBvcGVyYW5kcyBoYXZlIHRvIGJlIHNpbXVsdGFuZW91c2x5 IHRydWUsIHNvIHBlcmZvcm0gYW4gaW50ZXJzZWN0aW9uLgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBs ZS1yYW5nZS1nb3JpLmggYi9nY2MvZ2ltcGxlLXJhbmdlLWdvcmkuaAppbmRleCAwYzc3NmVmODUz Zi4uMWZmZjNlNjI1NWEgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtcmFuZ2UtZ29yaS5oCisrKyBi L2djYy9naW1wbGUtcmFuZ2UtZ29yaS5oCkBAIC0xNTMsNiArMTUzLDggQEAgcHJpdmF0ZToKIC8v CiAvLyBUaGUgcmVtYWluaW5nIHJvdXRpbmVzIGFyZSBpbnRlcm5hbCB1c2Ugb25seS4KIAorY2xh c3MgdmFsdWVfcmVsYXRpb247CisKIGNsYXNzIGdvcmlfY29tcHV0ZSA6IHB1YmxpYyBnb3JpX21h cAogewogcHVibGljOgpAQCAtMTY3LDE3ICsxNjksMjEgQEAgcHJpdmF0ZToKICAgYm9vbCBtYXlf cmVjb21wdXRlX3AgKHRyZWUgbmFtZSwgZWRnZSBlKTsKICAgYm9vbCBtYXlfcmVjb21wdXRlX3Ag KHRyZWUgbmFtZSwgYmFzaWNfYmxvY2sgYmIgPSBOVUxMKTsKICAgYm9vbCBjb21wdXRlX29wZXJh bmRfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxlICpzdG10LCBjb25zdCB2cmFuZ2UgJmxocywKLQkJ CSAgICAgIHRyZWUgbmFtZSwgY2xhc3MgZnVyX3NvdXJjZSAmc3JjKTsKKwkJCSAgICAgIHRyZWUg bmFtZSwgY2xhc3MgZnVyX3NvdXJjZSAmc3JjLAorCQkJICAgICAgdmFsdWVfcmVsYXRpb24gKnJl bCA9IE5VTEwpOwogICBib29sIGNvbXB1dGVfb3BlcmFuZF9yYW5nZV9zd2l0Y2ggKHZyYW5nZSAm ciwgZ3N3aXRjaCAqcywgY29uc3QgdnJhbmdlICZsaHMsCiAJCQkJICAgICB0cmVlIG5hbWUsIGZ1 cl9zb3VyY2UgJnNyYyk7CiAgIGJvb2wgY29tcHV0ZV9vcGVyYW5kMV9yYW5nZSAodnJhbmdlICZy LCBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciAmaGFuZGxlciwKLQkJCSAgICAgICBjb25zdCB2cmFu Z2UgJmxocywgdHJlZSBuYW1lLCBmdXJfc291cmNlICZzcmMpOworCQkJICAgICAgIGNvbnN0IHZy YW5nZSAmbGhzLCB0cmVlIG5hbWUsIGZ1cl9zb3VyY2UgJnNyYywKKwkJCSAgICAgICB2YWx1ZV9y ZWxhdGlvbiAqcmVsID0gTlVMTCk7CiAgIGJvb2wgY29tcHV0ZV9vcGVyYW5kMl9yYW5nZSAodnJh bmdlICZyLCBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciAmaGFuZGxlciwKLQkJCSAgICAgICBjb25z dCB2cmFuZ2UgJmxocywgdHJlZSBuYW1lLCBmdXJfc291cmNlICZzcmMpOworCQkJICAgICAgIGNv bnN0IHZyYW5nZSAmbGhzLCB0cmVlIG5hbWUsIGZ1cl9zb3VyY2UgJnNyYywKKwkJCSAgICAgICB2 YWx1ZV9yZWxhdGlvbiAqcmVsID0gTlVMTCk7CiAgIGJvb2wgY29tcHV0ZV9vcGVyYW5kMV9hbmRf b3BlcmFuZDJfcmFuZ2UgKHZyYW5nZSAmciwKIAkJCQkJICAgIGdpbXBsZV9yYW5nZV9vcF9oYW5k bGVyICZoYW5kbGVyLAogCQkJCQkgICAgY29uc3QgdnJhbmdlICZsaHMsIHRyZWUgbmFtZSwKLQkJ CQkJICAgIGZ1cl9zb3VyY2UgJnNyYyk7CisJCQkJCSAgICBmdXJfc291cmNlICZzcmMsCisJCQkJ CSAgICB2YWx1ZV9yZWxhdGlvbiAqcmVsID0gTlVMTCk7CiAgIHZvaWQgY29tcHV0ZV9sb2dpY2Fs X29wZXJhbmRzICh2cmFuZ2UgJnRydWVfcmFuZ2UsIHZyYW5nZSAmZmFsc2VfcmFuZ2UsCiAJCQkJ IGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyICZoYW5kbGVyLAogCQkJCSBjb25zdCBpcmFuZ2UgJmxo cywgdHJlZSBuYW1lLCBmdXJfc291cmNlICZzcmMsCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXJh bmdlLW9wLmNjIGIvZ2NjL2dpbXBsZS1yYW5nZS1vcC5jYwppbmRleCBkN2M2ZGZhOTMzZC4uZjZk MjA1M2YxNTYgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtcmFuZ2Utb3AuY2MKKysrIGIvZ2NjL2dp bXBsZS1yYW5nZS1vcC5jYwpAQCAtMjAyLDcgKzIwMiw3IEBAIGdpbXBsZV9yYW5nZV9vcF9oYW5k bGVyOjpjYWxjX29wMSAodnJhbmdlICZyLCBjb25zdCB2cmFuZ2UgJmxoc19yYW5nZSkKIAogYm9v bAogZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXI6OmNhbGNfb3AxICh2cmFuZ2UgJnIsIGNvbnN0IHZy YW5nZSAmbGhzX3JhbmdlLAotCQkJCSAgIGNvbnN0IHZyYW5nZSAmb3AyX3JhbmdlKQorCQkJCSAg IGNvbnN0IHZyYW5nZSAmb3AyX3JhbmdlLCByZWxhdGlvbl9raW5kIGspCiB7CiAgIC8vIEdpdmUg dXAgb24gZW1wdHkgcmFuZ2VzLgogICBpZiAobGhzX3JhbmdlLnVuZGVmaW5lZF9wICgpKQpAQCAt MjI1LDkgKzIyNSw5IEBAIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyOjpjYWxjX29wMSAodnJhbmdl ICZyLCBjb25zdCB2cmFuZ2UgJmxoc19yYW5nZSwKIAlvcDJfdHlwZSA9IFRSRUVfVFlQRSAob3Bl cmFuZDEgKCkpOwogICAgICAgVmFsdWVfUmFuZ2UgdHJhbmdlIChvcDJfdHlwZSk7CiAgICAgICB0 cmFuZ2Uuc2V0X3ZhcnlpbmcgKG9wMl90eXBlKTsKLSAgICAgIHJldHVybiBvcDFfcmFuZ2UgKHIs IHR5cGUsIGxoc19yYW5nZSwgdHJhbmdlKTsKKyAgICAgIHJldHVybiBvcDFfcmFuZ2UgKHIsIHR5 cGUsIGxoc19yYW5nZSwgdHJhbmdlLCBrKTsKICAgICB9Ci0gIHJldHVybiBvcDFfcmFuZ2UgKHIs IHR5cGUsIGxoc19yYW5nZSwgb3AyX3JhbmdlKTsKKyAgcmV0dXJuIG9wMV9yYW5nZSAociwgdHlw ZSwgbGhzX3JhbmdlLCBvcDJfcmFuZ2UsIGspOwogfQogCiAvLyBDYWxjdWxhdGUgd2hhdCB3ZSBj YW4gZGV0ZXJtaW5lIG9mIHRoZSByYW5nZSBvZiB0aGlzIHN0YXRlbWVudCdzCkBAIC0yMzcsNyAr MjM3LDcgQEAgZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXI6OmNhbGNfb3AxICh2cmFuZ2UgJnIsIGNv bnN0IHZyYW5nZSAmbGhzX3JhbmdlLAogCiBib29sCiBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlcjo6 Y2FsY19vcDIgKHZyYW5nZSAmciwgY29uc3QgdnJhbmdlICZsaHNfcmFuZ2UsCi0JCQkJICAgY29u c3QgdnJhbmdlICZvcDFfcmFuZ2UpCisJCQkJICAgY29uc3QgdnJhbmdlICZvcDFfcmFuZ2UsIHJl bGF0aW9uX2tpbmQgaykKIHsKICAgLy8gR2l2ZSB1cCBvbiBlbXB0eSByYW5nZXMuCiAgIGlmIChs aHNfcmFuZ2UudW5kZWZpbmVkX3AgKCkpCkBAIC0yNTAsOSArMjUwLDkgQEAgZ2ltcGxlX3Jhbmdl X29wX2hhbmRsZXI6OmNhbGNfb3AyICh2cmFuZ2UgJnIsIGNvbnN0IHZyYW5nZSAmbGhzX3Jhbmdl LAogICAgICAgdHJlZSBvcDFfdHlwZSA9IFRSRUVfVFlQRSAob3BlcmFuZDEgKCkpOwogICAgICAg VmFsdWVfUmFuZ2UgdHJhbmdlIChvcDFfdHlwZSk7CiAgICAgICB0cmFuZ2Uuc2V0X3Zhcnlpbmcg KG9wMV90eXBlKTsKLSAgICAgIHJldHVybiBvcDJfcmFuZ2UgKHIsIHR5cGUsIGxoc19yYW5nZSwg dHJhbmdlKTsKKyAgICAgIHJldHVybiBvcDJfcmFuZ2UgKHIsIHR5cGUsIGxoc19yYW5nZSwgdHJh bmdlLCBrKTsKICAgICB9Ci0gIHJldHVybiBvcDJfcmFuZ2UgKHIsIHR5cGUsIGxoc19yYW5nZSwg b3AxX3JhbmdlKTsKKyAgcmV0dXJuIG9wMl9yYW5nZSAociwgdHlwZSwgbGhzX3JhbmdlLCBvcDFf cmFuZ2UsIGspOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1y YW5nZS1vcC5oIGIvZ2NjL2dpbXBsZS1yYW5nZS1vcC5oCmluZGV4IDY4NzY0MTk4YmMwLi4zYTU1 NWYyOWE2NSAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1yYW5nZS1vcC5oCisrKyBiL2djYy9naW1w bGUtcmFuZ2Utb3AuaApAQCAtMzUsOCArMzUsMTAgQEAgcHVibGljOgogICB0cmVlIG9wZXJhbmQx ICgpIGNvbnN0IHsgZ2NjX2NoZWNraW5nX2Fzc2VydCAobV92YWxpZCk7IHJldHVybiBtX29wMTsg fQogICB0cmVlIG9wZXJhbmQyICgpIGNvbnN0IHsgZ2NjX2NoZWNraW5nX2Fzc2VydCAobV92YWxp ZCk7IHJldHVybiBtX29wMjsgfQogICBib29sIGNhbGNfb3AxICh2cmFuZ2UgJnIsIGNvbnN0IHZy YW5nZSAmbGhzX3JhbmdlKTsKLSAgYm9vbCBjYWxjX29wMSAodnJhbmdlICZyLCBjb25zdCB2cmFu Z2UgJmxoc19yYW5nZSwgY29uc3QgdnJhbmdlICZvcDJfcmFuZ2UpOwotICBib29sIGNhbGNfb3Ay ICh2cmFuZ2UgJnIsIGNvbnN0IHZyYW5nZSAmbGhzX3JhbmdlLCBjb25zdCB2cmFuZ2UgJm9wMV9y YW5nZSk7CisgIGJvb2wgY2FsY19vcDEgKHZyYW5nZSAmciwgY29uc3QgdnJhbmdlICZsaHNfcmFu Z2UsIGNvbnN0IHZyYW5nZSAmb3AyX3JhbmdlLAorCQkgcmVsYXRpb25fa2luZCBrID0gVlJFTF9W QVJZSU5HKTsKKyAgYm9vbCBjYWxjX29wMiAodnJhbmdlICZyLCBjb25zdCB2cmFuZ2UgJmxoc19y YW5nZSwgY29uc3QgdnJhbmdlICZvcDFfcmFuZ2UsCisJCSByZWxhdGlvbl9raW5kIGsgPSBWUkVM X1ZBUllJTkcpOwogcHJpdmF0ZToKICAgdm9pZCBtYXliZV9idWlsdGluX2NhbGwgKCk7CiAgIGdp bXBsZSAqbV9zdG10OwotLSAKMi4zNy4zCgo= --------------0uoLII3nNats4GrEypNI3BQi--