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 E2485384BC2C for ; Thu, 29 Sep 2022 22:38:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E2485384BC2C 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=1664491095; 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=1n4H1UBzRKQlnhFbVV1rY8Qp2dKGh+w3kR6h3PpogJ4=; b=KPY3KudFr0PWzv0A7xZcSJv4Wc7vbR4UON7r6xXHTIGIyodd7ZFt9F36v6eZGbx6c7poZC manY0FZFLb41LT1AEV6DkPBox40XJpbS63fWrDFEAzbiYbAaV4dYrXKrynmhCQorFarA3k 0oD73mEj36o6S6efQJpKaCbs0sdb27A= Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-30-_5_uq70cM-yyGW5OWJU8WA-1; Thu, 29 Sep 2022 18:38:14 -0400 X-MC-Unique: _5_uq70cM-yyGW5OWJU8WA-1 Received: by mail-qv1-f71.google.com with SMTP id c6-20020a0ce7c6000000b004abe95fbed8so1864052qvo.11 for ; Thu, 29 Sep 2022 15:38:14 -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=kH+mtPyt44UI/0aBOPNcI/GuBsi+ip81Dku5vHrfJe8=; b=654A6T2F7quiLXShDISya6ZTYTHlvsGKR0joWsz1fpQBdK3YO4uwBvuajRvPXsq8SL 5pzxAfbdfuE2ZpxX09Nm8zyCT6Fvq+ln1vKLSFsUrmhKWVszDoFVyCEstvyC6kl1IGEP 0HOaP+JP8RVFPwInlT3CaWq7YGg94ACTJxydJ4w31EF4a4XZikXe7HfhRtg0Vt8InRA5 Gcyxmgj4RoVjR5FZacG2Edj6H/iIVFlPHXtDuD0M6vZFfyzXxTkUHCQRbd5GcDi2ROov 7lCYJjx8tjHIeKCpTxDFcr/eANFwE1jigHCKLBraGRbauCs7emttnS0/KFV5l7Zngzd9 Ad3A== X-Gm-Message-State: ACrzQf2NjrAUZBuFHLq7BoUR15xtOUH2oSSKq2DJrG8+4Rcn9/7iaLTp lSBjmulpBSO5Yrz/PbYEjvjF7p8fyaoXNmPndr+/8BUgeer8FWS6z5VttgTSCEI6SUTYux/h5at 9W38b8Mn6q03x7AisqlxnPZeSMs8qfi35TjShKbKEwXZb3qybBWziLryT9Q8vvBMgSGMK+w== X-Received: by 2002:ac8:7dc6:0:b0:35c:c9b1:9f98 with SMTP id c6-20020ac87dc6000000b0035cc9b19f98mr4554464qte.170.1664491093110; Thu, 29 Sep 2022 15:38:13 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4RnDXnSO8jgIA2eT+TyZGSRCs011GnomEK7QQVPAkh2yk1RZu3HNjB0ZV4NMZwyJSdskQblQ== X-Received: by 2002:ac8:7dc6:0:b0:35c:c9b1:9f98 with SMTP id c6-20020ac87dc6000000b0035cc9b19f98mr4554449qte.170.1664491092805; Thu, 29 Sep 2022 15:38:12 -0700 (PDT) Received: from ?IPV6:2607:fea8:a263:f600::3dbe? ([2607:fea8:a263:f600::3dbe]) by smtp.gmail.com with ESMTPSA id q34-20020a05620a2a6200b006b8d1914504sm702757qkp.22.2022.09.29.15.38.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Sep 2022 15:38:11 -0700 (PDT) Message-ID: <9b234c9a-5020-c97c-c379-877c4c018293@redhat.com> Date: Thu, 29 Sep 2022 18:38:10 -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] Process unsigned overflow relations for plus and minus in range-ops. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------u0j0LpmHp2eZbAOgBNSckSyG" Content-Language: en-US X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00,BODY_8BITS,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. --------------u0j0LpmHp2eZbAOgBNSckSyG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit If a relation is available, calculate overflow and normal ranges. Then apply as appropriate. This patch implements operator_plus::op1/op2_range and operator_minus::op1_range to utilize any relation passed into properly reflect the range. If the relation between the LHS and the operand being calculated is one of <,<=,>,>=, then determine what the overflow and normal ranges are for this type, and reflect those in the operand being calculated. With this patch, we can move the testcase for PR 79095 to an evrp test instead of vrp1, so we resolve it much earlier.  This testcase tests various overflow conditions to ensure we can detect and propagate overflow conditions.  ie, it has a series of tests similar to: unsigned f1 (unsigned a, unsigned b) {   b = a + 1;   if (b < a)     {       arf (a, b);       return 42;     }   baz (a, b);   return b; } It tests that 'baz' remains a call using symbolic names, and that 'arf' can be folded to constant arguments. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew --------------u0j0LpmHp2eZbAOgBNSckSyG Content-Type: text/x-patch; charset=UTF-8; name="0006-Process-unsigned-overflow-relations-for-plus-and-min.patch" Content-Disposition: attachment; filename*0="0006-Process-unsigned-overflow-relations-for-plus-and-min.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmMDJjYjg2MDE3OTJiZTMxMGU4NzYwYjA4MmUwYzMyMTMxMjk2MzlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogVHVlLCAyMyBBdWcgMjAyMiAxMDoxNzowMiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggNi82 XSBQcm9jZXNzIHVuc2lnbmVkIG92ZXJmbG93IHJlbGF0aW9ucyBmb3IgcGx1cyBhbmQgbWludXMg aXMKIHJhbmdlLW9wcy4KCklmIGEgcmVsYXRpb24gaXMgYXZhaWxhYmxlLCBjYWxjdWxhdGUgb3Zl cmZsb3cgYW5kIG5vcm1hbCByYW5nZXMuIFRoZW4KYXBwbHkgYXMgYXBwcm9wcmlhdGUuCgoJZ2Nj LwoJKiByYW5nZS1vcC5jYyAocGx1c19taW51c19yYW5nZXMpOiBOZXcuCgkoYWRqdXN0X29wMV9m b3Jfb3ZlcmZsb3cpOiBOZXcuCgkob3BlcmF0b3JfcGx1czo6b3AxX3JhbmdlKTogVXNlIG5ldyBh ZGp1c3RtZW50LgoJKG9wZXJhdG9yX3BsdXM6Om9wMl9yYW5nZSk6IERpdHRvLgoJKG9wZXJhdG9y X21pbnVzOjpvcDFfcmFuZ2UpOiBEaXR0by4KCSogdmFsdWUtcmVsYXRpb24uaCAocmVsYXRpb25f bHRfbGVfZ3RfZ2VfcCk6IE5ldy4KCglnY2MvdGVzdHN1aXRlLwoJKiBnY2MuZGcvdHJlZS1zc2Ev cHI3OTA5NS5jOiBUZXN0IGV2cnAgcGFzcyByYXRoZXIgdGhhbiB2cnAxLgotLS0KIGdjYy9yYW5n ZS1vcC5jYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyMSArKysrKysrKysrKysrKysrKysr KysrKy0KIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByNzkwOTUuYyB8ICAgNiArLQog Z2NjL3ZhbHVlLXJlbGF0aW9uLmggICAgICAgICAgICAgICAgICAgIHwgICAyICsKIDMgZmlsZXMg Y2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv Z2NjL3JhbmdlLW9wLmNjIGIvZ2NjL3JhbmdlLW9wLmNjCmluZGV4IDliYjA0YzM2MWQwLi44MzBj NjRiZDZiOSAxMDA2NDQKLS0tIGEvZ2NjL3JhbmdlLW9wLmNjCisrKyBiL2djYy9yYW5nZS1vcC5j YwpAQCAtMTMwNSwyMiArMTMwNSwxMjMgQEAgb3BlcmF0b3JfcGx1czo6d2lfZm9sZCAoaXJhbmdl ICZyLCB0cmVlIHR5cGUsCiAgIHZhbHVlX3JhbmdlX3dpdGhfb3ZlcmZsb3cgKHIsIHR5cGUsIG5l d19sYiwgbmV3X3ViLCBvdl9sYiwgb3ZfdWIpOwogfQogCisvLyBHaXZlbiBhZGRpdGlvbiBvciBz dWJ0cmFjdGlvbiwgZGV0ZXJtaW5lIHRoZSBwb3NzaWJsZSBOT1JNQUwgcmFuZ2VzIGFuZAorLy8g T1ZFUkZMT1cgcmFuZ2VzIGdpdmVuIGFuIE9GRlNFVCByYW5nZS4gIEFERF9QIGlzIHRydWUgZm9y IGFkZGl0aW9uLgorLy8gUmV0dXJuIHRoZSByZWxhdGlvbiB0aGF0IGV4aXN0cyBiZXR3ZWVuIHRo ZSBMSFMgYW5kIE9QMSBpbiBvcmRlciBmb3IgdGhlCisvLyBOT1JNQUwgcmFuZ2UgdG8gYXBwbHku CisvLyBhIHJldHVybiB2YWx1ZSBvZiBWUkVMX1ZBUllJTkcgbWVhbnMgbm8gcmFuZ2VzIHdlcmUg YXBwbGljYWJsZS4KKworc3RhdGljIHJlbGF0aW9uX2tpbmQKK3BsdXNfbWludXNfcmFuZ2VzIChp cmFuZ2UgJnJfb3YsIGlyYW5nZSAmcl9ub3JtYWwsIGNvbnN0IGlyYW5nZSAmb2Zmc2V0LAorCQli b29sIGFkZF9wKQoreworICByZWxhdGlvbl9raW5kIGtpbmQgPSBWUkVMX1ZBUllJTkc7CisgIC8v IEZvciBub3csIG9ubHkgZGVhbCB3aXRoIGNvbnN0YW50IGFkZHMuICBUaGlzIGNvdWxkIGJlIGV4 dGVuZGVkIHRvIHJhbmdlcworICAvLyB3aGVuIHNvbWVvbmUgaXMgc28gbW90aXZhdGVkLgorICBp ZiAoIW9mZnNldC5zaW5nbGV0b25fcCAoKSB8fCBvZmZzZXQuemVyb19wICgpKQorICAgIHJldHVy biBraW5kOworCisgIC8vIEFsd2F5cyB3b3JrIHdpdGggYSBwb3NpdGl2ZSBvZmZzZXQuICBpZSBh KyAtMiAtPiBhLTIgIGFuZCBhLSAtMiA+IGErMgorICB3aWRlX2ludCBvZmYgPSBvZmZzZXQubG93 ZXJfYm91bmQgKCk7CisgIGlmICh3aTo6bmVnX3AgKG9mZiwgU0lHTkVEKSkKKyAgICB7CisgICAg ICBhZGRfcCA9ICFhZGRfcDsKKyAgICAgIG9mZiA9IHdpOjpuZWcgKG9mZik7CisgICAgfQorCisg IHdpOjpvdmVyZmxvd190eXBlIG92OworICB0cmVlIHR5cGUgPSBvZmZzZXQudHlwZSAoKTsKKyAg dW5zaWduZWQgcHJlYyA9IFRZUEVfUFJFQ0lTSU9OICh0eXBlKTsKKyAgd2lkZV9pbnQgdWI7Cisg IHdpZGVfaW50IGxiOworICAvLyBjYWxjdWxhdGUgdGhlIG5vcm1hbCByYW5nZSBhbmQgcmVsYXRp b24gZm9yIHRoZSBvcGVyYXRpb24uCisgIGlmIChhZGRfcCkKKyAgICB7CisgICAgICAvLyAgWyAw ICwgSU5GIC0gT0ZGXQorICAgICAgbGIgPSB3aTo6emVybyAocHJlYyk7CisgICAgICB1YiA9IHdp OjpzdWIgKHdpOjp0b193aWRlICh2cnBfdmFsX21heCAodHlwZSkpLCBvZmYsIFVOU0lHTkVELCAm b3YpOworICAgICAga2luZCA9IFZSRUxfR1Q7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAg Ly8gIFsgT0ZGLCBJTkYgXQorICAgICAgbGIgPSBvZmY7CisgICAgICB1YiA9IHdpOjp0b193aWRl ICh2cnBfdmFsX21heCAodHlwZSkpOworICAgICAga2luZCA9IFZSRUxfTFQ7CisgICAgfQorICBp bnRfcmFuZ2U8Mj4gbm9ybWFsX3JhbmdlICh0eXBlLCBsYiwgdWIpOworICBpbnRfcmFuZ2U8Mj4g b3ZfcmFuZ2UgKHR5cGUsIGxiLCB1YiwgVlJfQU5USV9SQU5HRSk7CisKKyAgcl9vdiA9IG92X3Jh bmdlOworICByX25vcm1hbCA9IG5vcm1hbF9yYW5nZTsKKyAgcmV0dXJuIGtpbmQ7Cit9CisKKy8v IE9uY2Ugb3AxIGhhcyBiZWVuIGNhbGN1bGF0ZWQgYnkgb3BlcmF0b3JfcGx1cyBvciBvcGVyYXRv cl9taW51cywgY2hlY2sKKy8vIHRvIHNlZSBpZiB0aGUgcmVsYXRpb24gcGFzc2VkIGNhdXNlcyBh bnkgcGFydCBvZiB0aGUgY2FsY3VsYXRpb24gdG8KKy8vIGJlIG5vdCBwb3NzaWJsZS4gIGllCisv LyBhXzIgPSBiXzMgKyAxICB3aXRoIGFfMiA8IGJfMyBjYW4gcmVmaW5lIHRoZSByYW5nZSBvZiBi XzMgdG8gW0lORiwgSU5GXQorLy8gYW5kIHRoYXQgZnVydGhlciByZWZpbmVzIGFfMiB0byBbMCwg MF0uCisvLyBSIGlzIHRoZSB2YWx1ZSBvZiBvcDEsIE9QMiBpcyB0aGUgb2Zmc2V0IGJlaW5nIGFk ZGVkL3N1YnRyYWN0ZWQsIFJFTCBpcyB0aGUKKy8vIHJlbGF0aW9uIGJldHdlZW4gTEhTIHJlbGF0 b2luIE9QMSAgYW5kIEFERF9QIGlzIHRydWUgZm9yIFBMVVMsIGZhbHNlIGZvcgorLy8gTUlOVVMu ICAgIElGIGFueSBhZGp1c3RtZW50IGNhbiBiZSBtYWRlLCBSIHdpbGwgcmVmbGVjdCBpdC4KKwor c3RhdGljIHZvaWQKK2FkanVzdF9vcDFfZm9yX292ZXJmbG93IChpcmFuZ2UgJnIsIGNvbnN0IGly YW5nZSAmb3AyLCByZWxhdGlvbl9raW5kIHJlbCwKKwkJCSBib29sIGFkZF9wKQoreworICB0cmVl IHR5cGUgPSByLnR5cGUgKCk7CisgIC8vIENoZWNrIGZvciB1bnNpZ25lZCBvdmVyZmxvdyBhbmQg Y2FsY3VsYXRlIHRoZSBvdmVyZmxvdyBwYXJ0LgorICBzaWdub3AgcyA9IFRZUEVfU0lHTiAodHlw ZSk7CisgIGlmICghVFlQRV9PVkVSRkxPV19XUkFQUyAodHlwZSkgfHwgcyA9PSBTSUdORUQpCisg ICAgcmV0dXJuOworCisgIC8vIE9ubHkgd29yayB3aXRoIDwsIDw9LCA+LCA+PSByZWxhdGlvbnMu CisgIGlmICghcmVsYXRpb25fbHRfbGVfZ3RfZ2VfcCAocmVsKSkKKyAgICByZXR1cm47CisKKyAg Ly8gR2V0IHRoZSByYW5nZXMgZm9yIHRoaXMgb2Zmc2V0LgorICBpbnRfcmFuZ2VfbWF4IG5vcm1h bCwgb3ZlcmZsb3c7CisgIHJlbGF0aW9uX2tpbmQgayA9IHBsdXNfbWludXNfcmFuZ2VzIChvdmVy Zmxvdywgbm9ybWFsLCBvcDIsIGFkZF9wKTsKKworICAvLyBWUkVMX1ZBUllJTkcgbWVhbnMgdGhl cmUgYXJlIG5vIGFkanVzdG1lbnRzLgorICBpZiAoayA9PSBWUkVMX1ZBUllJTkcpCisgICAgcmV0 dXJuOworCisgIC8vIElmIHRoZSByZWxhdGlvbnMgbWF0Y2ggdXNlIHRoZSBub3JtYWwgcmFuZ2Us IG90aGVyd2lzZSB1c2Ugb3ZlcmZsb3cgcmFuZ2UuCisgIGlmIChyZWxhdGlvbl9pbnRlcnNlY3Qg KGssIHJlbCkgPT0gaykKKyAgICByLmludGVyc2VjdCAobm9ybWFsKTsKKyAgZWxzZQorICAgIHIu aW50ZXJzZWN0IChvdmVyZmxvdyk7CisgIHJldHVybjsKK30KKwogYm9vbAogb3BlcmF0b3JfcGx1 czo6b3AxX3JhbmdlIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKIAkJCSAgY29uc3QgaXJhbmdlICZs aHMsCiAJCQkgIGNvbnN0IGlyYW5nZSAmb3AyLAotCQkJICByZWxhdGlvbl9raW5kIHJlbCBBVFRS SUJVVEVfVU5VU0VEKSBjb25zdAorCQkJICByZWxhdGlvbl9raW5kIHJlbCkgY29uc3QKIHsKLSAg cmV0dXJuIHJhbmdlX29wX2hhbmRsZXIgKE1JTlVTX0VYUFIsIHR5cGUpLmZvbGRfcmFuZ2UgKHIs IHR5cGUsIGxocywgb3AyKTsKKyAgaWYgKGxocy51bmRlZmluZWRfcCAoKSkKKyAgICByZXR1cm4g ZmFsc2U7CisgIC8vIFN0YXJ0IHdpdGggdGhlIGRlZmF1bHQgb3BlcmF0aW9uLgorICByYW5nZV9v cF9oYW5kbGVyIG1pbnVzIChNSU5VU19FWFBSLCB0eXBlKTsKKyAgaWYgKCFtaW51cykKKyAgICBy ZXR1cm4gZmFsc2U7CisgIGJvb2wgcmVzID0gbWludXMuZm9sZF9yYW5nZSAociwgdHlwZSwgbGhz LCBvcDIpOworICAvLyBDaGVjayBmb3IgYSByZWxhdGlvbiByZWZpbmVtZW50LgorICBpZiAocmVz KQorICAgIGFkanVzdF9vcDFfZm9yX292ZXJmbG93IChyLCBvcDIsIHJlbCwgdHJ1ZSAvKiBQTFVT X0VYUFIgKi8pOworICByZXR1cm4gcmVzOwogfQogCiBib29sCiBvcGVyYXRvcl9wbHVzOjpvcDJf cmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAogCQkJICBjb25zdCBpcmFuZ2UgJmxocywKIAkJ CSAgY29uc3QgaXJhbmdlICZvcDEsCi0JCQkgIHJlbGF0aW9uX2tpbmQgcmVsIEFUVFJJQlVURV9V TlVTRUQpIGNvbnN0CisJCQkgIHJlbGF0aW9uX2tpbmQgcmVsKSBjb25zdAogewotICByZXR1cm4g cmFuZ2Vfb3BfaGFuZGxlciAoTUlOVVNfRVhQUiwgdHlwZSkuZm9sZF9yYW5nZSAociwgdHlwZSwg bGhzLCBvcDEpOworICByZXR1cm4gb3AxX3JhbmdlIChyLCB0eXBlLCBsaHMsIG9wMSwgcmVsKTsK IH0KIAogCkBAIC0xNDcyLDcgKzE1NzMsMTcgQEAgb3BlcmF0b3JfbWludXM6Om9wMV9yYW5nZSAo aXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCQkgICBjb25zdCBpcmFuZ2UgJm9wMiwKIAkJCSAgIHJl bGF0aW9uX2tpbmQgcmVsIEFUVFJJQlVURV9VTlVTRUQpIGNvbnN0CiB7Ci0gIHJldHVybiByYW5n ZV9vcF9oYW5kbGVyIChQTFVTX0VYUFIsIHR5cGUpLmZvbGRfcmFuZ2UgKHIsIHR5cGUsIGxocywg b3AyKTsKKyAgaWYgKGxocy51bmRlZmluZWRfcCAoKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIC8v IFN0YXJ0IHdpdGggdGhlIGRlZmF1bHQgb3BlcmF0aW9uLgorICByYW5nZV9vcF9oYW5kbGVyIG1p bnVzIChQTFVTX0VYUFIsIHR5cGUpOworICBpZiAoIW1pbnVzKQorICAgIHJldHVybiBmYWxzZTsK KyAgYm9vbCByZXMgPSBtaW51cy5mb2xkX3JhbmdlIChyLCB0eXBlLCBsaHMsIG9wMik7CisgIGlm IChyZXMpCisgICAgYWRqdXN0X29wMV9mb3Jfb3ZlcmZsb3cgKHIsIG9wMiwgcmVsLCBmYWxzZSAv KiBQTFVTX0VYUFIgKi8pOworICByZXR1cm4gcmVzOworCiB9CiAKIGJvb2wKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByNzkwOTUuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RyZWUtc3NhL3ByNzkwOTUuYwppbmRleCBmNjM1ZmNhZmU0Zi4uYjE3NTE4Nzc3NTYg MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByNzkwOTUuYworKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9wcjc5MDk1LmMKQEAgLTEsNSArMSw1IEBA CiAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1pcGEt aWNmIC1mZHVtcC10cmVlLXZycDEiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8taXBh LWljZiAtZmR1bXAtdHJlZS1ldnJwIiB9ICovCiAKIGV4dGVybiB2b2lkIGFyZiAodW5zaWduZWQg eCwgdW5zaWduZWQgeSk7CiBleHRlcm4gdm9pZCBiYXogKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHkp OwpAQCAtNDI5LDggKzQyOSw4IEBAIGY0bnJvICh1bnNpZ25lZCBhLCB1bnNpZ25lZCBiKQogfQog CiAvKiBBbGwgY2FsbHMgdG8gYmF6IHNob3VsZCBzdGlsbCByZWZlcmVuY2UgYSAmIGIgYXMgYXJn dW1lbnRzLiAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJiYXogXFwo YV9cWzAtOVxdK1xcKERcXCksIGJfXFswLTlcXStcXCkiIDMyICJ2cnAxIn0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJiYXogXFwoYV9cWzAtOVxdK1xcKERcXCks IGJfXFswLTlcXStcXCkiIDMyICJldnJwIn0gfSAqLwogCiAKIC8qIEFsbCBjYWxscyB0byBhcmYg c2hvdWxkIGhhdmUgY29uc3RhbnQgYXJndW1lbnRzLiAgKi8KLS8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiYXJmIFxcKFxbMC05XF0rLCBcWzAtOVxdK1xcKSIgMzIgInZycDEi fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImFyZiBcXChcWzAt OVxdKywgXFswLTlcXStcXCkiIDMyICJldnJwIn0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3ZhbHVl LXJlbGF0aW9uLmggYi9nY2MvdmFsdWUtcmVsYXRpb24uaAppbmRleCBmM2IxOGFjNjJlZi4uZTEz NDdlYThhZDggMTAwNjQ0Ci0tLSBhL2djYy92YWx1ZS1yZWxhdGlvbi5oCisrKyBiL2djYy92YWx1 ZS1yZWxhdGlvbi5oCkBAIC03OCw2ICs3OCw4IEBAIHJlbGF0aW9uX2tpbmQgcmVsYXRpb25fdW5p b24gKHJlbGF0aW9uX2tpbmQgcjEsIHJlbGF0aW9uX2tpbmQgcjIpOwogcmVsYXRpb25fa2luZCBy ZWxhdGlvbl9pbnRlcnNlY3QgKHJlbGF0aW9uX2tpbmQgcjEsIHJlbGF0aW9uX2tpbmQgcjIpOwog cmVsYXRpb25fa2luZCByZWxhdGlvbl9uZWdhdGUgKHJlbGF0aW9uX2tpbmQgcik7CiByZWxhdGlv bl9raW5kIHJlbGF0aW9uX3N3YXAgKHJlbGF0aW9uX2tpbmQgcik7CitpbmxpbmUgYm9vbCByZWxh dGlvbl9sdF9sZV9ndF9nZV9wIChyZWxhdGlvbl9raW5kIHIpCisJCQkJICAgIHsgcmV0dXJuIChy ID49IFZSRUxfTFQgJiYgciA8PSBWUkVMX0dFKTsgfQogdm9pZCBwcmludF9yZWxhdGlvbiAoRklM RSAqZiwgcmVsYXRpb25fa2luZCByZWwpOwogCiBjbGFzcyByZWxhdGlvbl9vcmFjbGUKLS0gCjIu MzcuMwoK --------------u0j0LpmHp2eZbAOgBNSckSyG--