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 989A43858C20 for ; Fri, 7 Oct 2022 09:23:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 989A43858C20 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=1665134621; 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: in-reply-to:in-reply-to:references:references; bh=NexLokWRjXUA3wstC8+qBw2XKBKBt2EtaqbeVUf5v2k=; b=PJRwJtxfsr437AMh9Y28aP6s+qDGiJqgg+U2HxWiXoTHIuisTA5ef7l9LC2xLDdFrLzi87 Fr6WwuLSh2D4OiRa7xB8aIQZUSj8JCyeeoBkG1KCnlUWZKJlYkz1thYRcygd+s76lQ5mKi m5hwkXrUqby43+nW0dswNDZg3nPDSw4= Received: from mail-yb1-f199.google.com (mail-yb1-f199.google.com [209.85.219.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-214-xvM_GS5wPfKzgmYv7xGzqQ-1; Fri, 07 Oct 2022 05:23:35 -0400 X-MC-Unique: xvM_GS5wPfKzgmYv7xGzqQ-1 Received: by mail-yb1-f199.google.com with SMTP id q17-20020a25f911000000b006bcc33faa7bso4177793ybe.4 for ; Fri, 07 Oct 2022 02:23:34 -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:subject:date:message-id :reply-to; bh=NexLokWRjXUA3wstC8+qBw2XKBKBt2EtaqbeVUf5v2k=; b=C/MtBRI5Dpw9d/Dx2oMStoWv8sFdHGTCENsk4iD6v/VIVXHGhnMvJsQG/7UXgdCehd 5FRfX8+6ck17saO4LqOLUD+MtTRJI7i60ZxIAKANJR8jF7jvCx/CBx4CukbWG+a2mlnA XKEjL+jPKEygJOitKvdMKk2uMhotXc30ohKpmL78ngt2YoimJaDLECFFdkQIdrUsfc9f aubktZq+6+WMWUIWfUeOiXM4b+Aixi8IZbSscwJ+Ih4AdatbAPdW5FplBbhJf8yfk3or 2LjicwMiV40fPVpJxlInRKF9xuJHJyYBU9XeKWskFHpRwaSOw6NVn3nYQYYXJpGjI3tE VQDA== X-Gm-Message-State: ACrzQf0aJqXOh0RuILOFFtVjbPREYt8wuubMSNefwNEDBEcfuR6mTmak RcQMxYj6dZT7NobOXHUdQAmTVJtskSW2y7QvRBBLYxMv7bcNffNAmmKXfGBGrm2WITnSBaSNwX7 0Q7PxM/RVRgac2rZTdsL2vUSmIlqnBeiKiA== X-Received: by 2002:a0d:e845:0:b0:358:49da:30a3 with SMTP id r66-20020a0de845000000b0035849da30a3mr3656861ywe.158.1665134614476; Fri, 07 Oct 2022 02:23:34 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4RIy+hcsgU3/QuvdiR8EFGAlYotT4E+kPyh8VpCmvHRg0fps8cWbquC9WPNXvcLAOwPvSjg8PorGG9tJ8Ktbg= X-Received: by 2002:a0d:e845:0:b0:358:49da:30a3 with SMTP id r66-20020a0de845000000b0035849da30a3mr3656848ywe.158.1665134614207; Fri, 07 Oct 2022 02:23:34 -0700 (PDT) MIME-Version: 1.0 References: <07FCA378-7E86-4E06-B506-FED0C60CE31C@gmail.com> <974d3399-7eac-803d-2c64-fb7d7bf3f71f@redhat.com> In-Reply-To: From: Aldy Hernandez Date: Fri, 7 Oct 2022 11:23:22 +0200 Message-ID: Subject: Re: [COMMITTED] Convert nonzero mask in irange to wide_int. To: Andrew MacLeod Cc: Richard Biener , GCC patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="0000000000002f0f3205ea6e5dc3" X-Spam-Status: No, score=-11.6 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: --0000000000002f0f3205ea6e5dc3 Content-Type: text/plain; charset="UTF-8" On Wed, Oct 5, 2022 at 12:14 PM Aldy Hernandez wrote: > However... I don't think I have the stomach to overhaul the allocators > this late in the release. For this release I may opt to put the > nonzero mask back in a tree, but have it always be set. The NULL == > -1 shortcut was very error prone. The rest of my fixes in this patch > still apply, as they keep better track of the masks, which we need. Here is the patch reverting the nonzero mask to trees. Unfortunately, having the mask always set caused a 10% regression in VRP, so that's a no go. I've gone back to keeping a NULL mask by default that semantically means -1. It's not as bad as I thought, since the code is much cleaner now. This is unfortunate, but a 10% regression in VRP plus a 1.5% regression in overall compilation is unacceptable. On the plus side, this is temporary as we're moving entirely to wide ints next release (with appropriate cache/allocator changes). I will commit after a final round of tests finishes. Thanks. Aldy --0000000000002f0f3205ea6e5dc3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Convert-nonzero-mask-back-to-tree.patch" Content-Disposition: attachment; filename="0001-Convert-nonzero-mask-back-to-tree.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l8y9v0lp0 RnJvbSA2YjZlOTI5YjIzOGZmOTFmZWUxZjEzM2UzZmY3YWRjZWIzZjc1NjYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGR5IEhlcm5hbmRleiA8YWxkeWhAcmVkaGF0LmNvbT4KRGF0 ZTogRnJpLCA3IE9jdCAyMDIyIDA5OjU3OjMyICswMjAwClN1YmplY3Q6IFtQQVRDSF0gQ29udmVy dCBub256ZXJvIG1hc2sgYmFjayB0byB0cmVlLgoKSGF2aW5nIG5vbnplcm8gbWFza3MgYWx3YXlz IHNldCBoYWQgYSBwZXJmb3JtYW5jZSBwZW5hbHR5IG9mIDEwJSBpbgpWUlAsIHNvIG1hc2s9PU5V TEwgaXMgYSBzaG9ydGN1dCB0byBhbGwgYml0cyBzZXQuCgpnY2MvQ2hhbmdlTG9nOgoKCSogdmFs dWUtcmFuZ2UuY2MgKGlyYW5nZTo6aXJhbmdlX3NldCk6IENvbnZlcnQgbm9uemVybyBtYXNrIHRv Cgl0cmVlLgoJKGlyYW5nZTo6aXJhbmdlX3NldF9hbnRpX3JhbmdlKTogU2FtZS4KCShpcmFuZ2U6 OnNldCk6IFNhbWUuCgkoaXJhbmdlOjp2ZXJpZnlfcmFuZ2UpOiBTYW1lLgoJKGlyYW5nZTo6Y29u dGFpbnNfcCk6IFNhbWUuCgkoaXJhbmdlOjppbnZlcnQpOiBTYW1lLgoJKGlyYW5nZTo6c2V0X3Jh bmdlX2Zyb21fbm9uemVyb19iaXRzKTogU2FtZS4KCShpcmFuZ2U6OnNldF9ub256ZXJvX2JpdHMp OiBTYW1lLgoJKG1hc2tfdG9fd2kpOiBTYW1lLgoJKGlyYW5nZTo6aW50ZXJzZWN0X25vbnplcm9f Yml0cyk6IFNhbWUuCgkoaXJhbmdlOjp1bmlvbl9ub256ZXJvX2JpdHMpOiBTYW1lLgoJKiB2YWx1 ZS1yYW5nZS5oIChpcmFuZ2U6OnZhcnlpbmdfY29tcGF0aWJsZV9wKTogU2FtZS4KCShndF9nZ2Nf bXgpOiBTYW1lLgoJKGd0X3BjaF9ueCk6IFNhbWUuCgkoaXJhbmdlOjpzZXRfdW5kZWZpbmVkKTog U2FtZS4KCShpcmFuZ2U6OnNldF92YXJ5aW5nKTogU2FtZS4KLS0tCiBnY2MvdmFsdWUtcmFuZ2Uu Y2MgfCA4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBn Y2MvdmFsdWUtcmFuZ2UuaCAgfCAxOSArKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3NyBp bnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvdmFsdWUtcmFu Z2UuY2MgYi9nY2MvdmFsdWUtcmFuZ2UuY2MKaW5kZXggODcyMzlmYWZhNzcuLmI0NDk2ZWE5ZWVh IDEwMDY0NAotLS0gYS9nY2MvdmFsdWUtcmFuZ2UuY2MKKysrIGIvZ2NjL3ZhbHVlLXJhbmdlLmNj CkBAIC05MzUsNyArOTM1LDcgQEAgaXJhbmdlOjppcmFuZ2Vfc2V0ICh0cmVlIG1pbiwgdHJlZSBt YXgpCiAgIG1fYmFzZVsxXSA9IG1heDsKICAgbV9udW1fcmFuZ2VzID0gMTsKICAgbV9raW5kID0g VlJfUkFOR0U7Ci0gIG1fbm9uemVyb19tYXNrID0gd2k6OnNod2kgKC0xLCBUWVBFX1BSRUNJU0lP TiAoVFJFRV9UWVBFIChtaW4pKSk7CisgIG1fbm9uemVyb19tYXNrID0gTlVMTDsKICAgbm9ybWFs aXplX2tpbmQgKCk7CiAKICAgaWYgKGZsYWdfY2hlY2tpbmcpCkBAIC0xMDA5LDcgKzEwMDksNyBA QCBpcmFuZ2U6OmlyYW5nZV9zZXRfYW50aV9yYW5nZSAodHJlZSBtaW4sIHRyZWUgbWF4KQogICAg IH0KIAogICBtX2tpbmQgPSBWUl9SQU5HRTsKLSAgbV9ub256ZXJvX21hc2sgPSB3aTo6c2h3aSAo LTEsIFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKG1pbikpKTsKKyAgbV9ub256ZXJvX21hc2sg PSBOVUxMOwogICBub3JtYWxpemVfa2luZCAoKTsKIAogICBpZiAoZmxhZ19jaGVja2luZykKQEAg LTEwNjYsNyArMTA2Niw3IEBAIGlyYW5nZTo6c2V0ICh0cmVlIG1pbiwgdHJlZSBtYXgsIHZhbHVl X3JhbmdlX2tpbmQga2luZCkKICAgICAgIG1fYmFzZVswXSA9IG1pbjsKICAgICAgIG1fYmFzZVsx XSA9IG1heDsKICAgICAgIG1fbnVtX3JhbmdlcyA9IDE7Ci0gICAgICBtX25vbnplcm9fbWFzayA9 IHdpOjpzaHdpICgtMSwgVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQRSAobWluKSkpOworICAgICAg bV9ub256ZXJvX21hc2sgPSBOVUxMOwogICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTExNiw3 ICsxMTE2LDcgQEAgaXJhbmdlOjpzZXQgKHRyZWUgbWluLCB0cmVlIG1heCwgdmFsdWVfcmFuZ2Vf a2luZCBraW5kKQogICBtX2Jhc2VbMF0gPSBtaW47CiAgIG1fYmFzZVsxXSA9IG1heDsKICAgbV9u dW1fcmFuZ2VzID0gMTsKLSAgbV9ub256ZXJvX21hc2sgPSB3aTo6c2h3aSAoLTEsIFRZUEVfUFJF Q0lTSU9OIChUUkVFX1RZUEUgKG1pbikpKTsKKyAgbV9ub256ZXJvX21hc2sgPSBOVUxMOwogICBu b3JtYWxpemVfa2luZCAoKTsKICAgaWYgKGZsYWdfY2hlY2tpbmcpCiAgICAgdmVyaWZ5X3Jhbmdl ICgpOwpAQCAtMTEzNSw3ICsxMTM1LDggQEAgaXJhbmdlOjp2ZXJpZnlfcmFuZ2UgKCkKICAgICB9 CiAgIGlmIChtX2tpbmQgPT0gVlJfVkFSWUlORykKICAgICB7Ci0gICAgICBnY2NfY2hlY2tpbmdf YXNzZXJ0IChtX25vbnplcm9fbWFzayA9PSAtMSk7CisgICAgICBnY2NfY2hlY2tpbmdfYXNzZXJ0 ICghbV9ub256ZXJvX21hc2sKKwkJCSAgIHx8IHdpOjp0b193aWRlIChtX25vbnplcm9fbWFzaykg PT0gLTEpOwogICAgICAgZ2NjX2NoZWNraW5nX2Fzc2VydCAobV9udW1fcmFuZ2VzID09IDEpOwog ICAgICAgZ2NjX2NoZWNraW5nX2Fzc2VydCAodmFyeWluZ19jb21wYXRpYmxlX3AgKCkpOwogICAg ICAgcmV0dXJuOwpAQCAtMTQwOSwxMCArMTQxMCwxMCBAQCBpcmFuZ2U6OmNvbnRhaW5zX3AgKHRy ZWUgY3N0KSBjb25zdAogICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChUUkVFX0NPREUgKGNzdCkgPT0g SU5URUdFUl9DU1QpOwogCiAgIC8vIFNlZSBpZiB3ZSBjYW4gZXhjbHVkZSBDU1QgYmFzZWQgb24g dGhlIG5vbnplcm8gYml0cy4KLSAgaWYgKG1fbm9uemVyb19tYXNrICE9IC0xKQorICBpZiAobV9u b256ZXJvX21hc2spCiAgICAgewogICAgICAgd2lkZV9pbnQgY3N0dyA9IHdpOjp0b193aWRlIChj c3QpOwotICAgICAgaWYgKGNzdHcgIT0gMCAmJiB3aTo6Yml0X2FuZCAobV9ub256ZXJvX21hc2ss IGNzdHcpID09IDApCisgICAgICBpZiAoY3N0dyAhPSAwICYmIHdpOjpiaXRfYW5kICh3aTo6dG9f d2lkZSAobV9ub256ZXJvX21hc2spLCBjc3R3KSA9PSAwKQogCXJldHVybiBmYWxzZTsKICAgICB9 CiAKQEAgLTI3NzYsNyArMjc3Nyw3IEBAIGlyYW5nZTo6aW52ZXJ0ICgpCiAgIHNpZ25vcCBzaWdu ID0gVFlQRV9TSUdOICh0dHlwZSk7CiAgIHdpZGVfaW50IHR5cGVfbWluID0gd2k6Om1pbl92YWx1 ZSAocHJlYywgc2lnbik7CiAgIHdpZGVfaW50IHR5cGVfbWF4ID0gd2k6Om1heF92YWx1ZSAocHJl Yywgc2lnbik7Ci0gIG1fbm9uemVyb19tYXNrID0gd2k6OnNod2kgKC0xLCBwcmVjKTsKKyAgbV9u b256ZXJvX21hc2sgPSBOVUxMOwogICBpZiAobV9udW1fcmFuZ2VzID09IG1fbWF4X3Jhbmdlcwog ICAgICAgJiYgbG93ZXJfYm91bmQgKCkgIT0gdHlwZV9taW4KICAgICAgICYmIHVwcGVyX2JvdW5k ICgpICE9IHR5cGVfbWF4KQpAQCAtMjg3OCwyMCArMjg3OSwyMiBAQCBib29sCiBpcmFuZ2U6OnNl dF9yYW5nZV9mcm9tX25vbnplcm9fYml0cyAoKQogewogICBnY2NfY2hlY2tpbmdfYXNzZXJ0ICgh dW5kZWZpbmVkX3AgKCkpOwotICB1bnNpZ25lZCBwb3Bjb3VudCA9IHdpOjpwb3Bjb3VudCAobV9u b256ZXJvX21hc2spOworICBpZiAoIW1fbm9uemVyb19tYXNrKQorICAgIHJldHVybiBmYWxzZTsK KyAgdW5zaWduZWQgcG9wY291bnQgPSB3aTo6cG9wY291bnQgKHdpOjp0b193aWRlIChtX25vbnpl cm9fbWFzaykpOwogCiAgIC8vIElmIHdlIGhhdmUgb25seSBvbmUgYml0IHNldCBpbiB0aGUgbWFz aywgd2UgY2FuIGZpZ3VyZSBvdXQgdGhlCiAgIC8vIHJhbmdlIGltbWVkaWF0ZWx5LgogICBpZiAo cG9wY291bnQgPT0gMSkKICAgICB7CiAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcGVzc2lt aXplIHRoZSByYW5nZS4KLSAgICAgIGlmICghY29udGFpbnNfcCAod2lkZV9pbnRfdG9fdHJlZSAo dHlwZSAoKSwgbV9ub256ZXJvX21hc2spKSkKKyAgICAgIGlmICghY29udGFpbnNfcCAobV9ub256 ZXJvX21hc2spKQogCXJldHVybiBmYWxzZTsKIAogICAgICAgYm9vbCBoYXNfemVybyA9IGNvbnRh aW5zX3AgKGJ1aWxkX3plcm9fY3N0ICh0eXBlICgpKSk7Ci0gICAgICB3aWRlX2ludCBiaXRzID0g bV9ub256ZXJvX21hc2s7Ci0gICAgICBzZXQgKHR5cGUgKCksIGJpdHMsIGJpdHMpOwotICAgICAg bV9ub256ZXJvX21hc2sgPSBiaXRzOworICAgICAgdHJlZSBueiA9IG1fbm9uemVyb19tYXNrOwor ICAgICAgc2V0IChueiwgbnopOworICAgICAgbV9ub256ZXJvX21hc2sgPSBuejsKICAgICAgIGlm IChoYXNfemVybykKIAl7CiAJICBpbnRfcmFuZ2U8Mj4gemVybzsKQEAgLTI5MDksMTEgKzI5MTIs MjEgQEAgaXJhbmdlOjpzZXRfbm9uemVyb19iaXRzIChjb25zdCB3aWRlX2ludF9yZWYgJmJpdHMp CiAgIGdjY19jaGVja2luZ19hc3NlcnQgKCF1bmRlZmluZWRfcCAoKSk7CiAgIHVuc2lnbmVkIHBy ZWMgPSBUWVBFX1BSRUNJU0lPTiAodHlwZSAoKSk7CiAKKyAgaWYgKGJpdHMgPT0gLTEpCisgICAg eworICAgICAgbV9ub256ZXJvX21hc2sgPSBOVUxMOworICAgICAgbm9ybWFsaXplX2tpbmQgKCk7 CisgICAgICBpZiAoZmxhZ19jaGVja2luZykKKwl2ZXJpZnlfcmFuZ2UgKCk7CisgICAgICByZXR1 cm47CisgICAgfQorCiAgIC8vIERyb3AgVkFSWUlOR3Mgd2l0aCBhIG5vbnplcm8gbWFzayB0byBh IHBsYWluIHJhbmdlLgogICBpZiAobV9raW5kID09IFZSX1ZBUllJTkcgJiYgYml0cyAhPSAtMSkK ICAgICBtX2tpbmQgPSBWUl9SQU5HRTsKIAotICBtX25vbnplcm9fbWFzayA9IHdpZGVfaW50Ojpm cm9tIChiaXRzLCBwcmVjLCBUWVBFX1NJR04gKHR5cGUgKCkpKTsKKyAgd2lkZV9pbnQgbnogPSB3 aWRlX2ludDo6ZnJvbSAoYml0cywgcHJlYywgVFlQRV9TSUdOICh0eXBlICgpKSk7CisgIG1fbm9u emVyb19tYXNrID0gd2lkZV9pbnRfdG9fdHJlZSAodHlwZSAoKSwgbnopOwogICBpZiAoc2V0X3Jh bmdlX2Zyb21fbm9uemVyb19iaXRzICgpKQogICAgIHJldHVybjsKIApAQCAtMjkzNyw3ICsyOTUw LDIxIEBAIGlyYW5nZTo6Z2V0X25vbnplcm9fYml0cyAoKSBjb25zdAogICAvLyB0aGUgbWFzayBw cmVjaXNlbHkgdXAgdG8gZGF0ZSBhdCBhbGwgdGltZXMuICBJbnN0ZWFkLCB3ZSBkZWZhdWx0CiAg IC8vIHRvIC0xIGFuZCBzZXQgaXQgd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZC4gIEhvd2V2ZXIs IHRoaXMKICAgLy8gZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBjb3JyZWN0IG1hc2su Ci0gIHJldHVybiBtX25vbnplcm9fbWFzayAmIGdldF9ub256ZXJvX2JpdHNfZnJvbV9yYW5nZSAo KTsKKyAgaWYgKG1fbm9uemVyb19tYXNrKQorICAgIHJldHVybiB3aTo6dG9fd2lkZSAobV9ub256 ZXJvX21hc2spICYgZ2V0X25vbnplcm9fYml0c19mcm9tX3JhbmdlICgpOworICBlbHNlCisgICAg cmV0dXJuIGdldF9ub256ZXJvX2JpdHNfZnJvbV9yYW5nZSAoKTsKK30KKworLy8gQ29udmVydCB0 cmVlIG1hc2sgdG8gd2lkZV9pbnQuICBSZXR1cm5zIC0xIGZvciBOVUxMIG1hc2tzLgorCitpbmxp bmUgd2lkZV9pbnQKK21hc2tfdG9fd2kgKHRyZWUgbWFzaywgdHJlZSB0eXBlKQoreworICBpZiAo bWFzaykKKyAgICByZXR1cm4gd2k6OnRvX3dpZGUgKG1hc2spOworICBlbHNlCisgICAgcmV0dXJu IHdpOjpzaHdpICgtMSwgVFlQRV9QUkVDSVNJT04gKHR5cGUpKTsKIH0KIAogLy8gSW50ZXJzZWN0 IHRoZSBub256ZXJvIGJpdHMgaW4gUiBpbnRvIFRISVMgYW5kIG5vcm1hbGl6ZSB0aGUgcmFuZ2Uu CkBAIC0yOTQ4LDEwICsyOTc1LDIwIEBAIGlyYW5nZTo6aW50ZXJzZWN0X25vbnplcm9fYml0cyAo Y29uc3QgaXJhbmdlICZyKQogewogICBnY2NfY2hlY2tpbmdfYXNzZXJ0ICghdW5kZWZpbmVkX3Ag KCkgJiYgIXIudW5kZWZpbmVkX3AgKCkpOwogCisgIGlmICghbV9ub256ZXJvX21hc2sgJiYgIXIu bV9ub256ZXJvX21hc2spCisgICAgeworICAgICAgbm9ybWFsaXplX2tpbmQgKCk7CisgICAgICBp ZiAoZmxhZ19jaGVja2luZykKKwl2ZXJpZnlfcmFuZ2UgKCk7CisgICAgICByZXR1cm4gZmFsc2U7 CisgICAgfQorCiAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICBpZiAobV9ub256ZXJvX21hc2sg IT0gci5tX25vbnplcm9fbWFzaykKKyAgdHJlZSB0ID0gdHlwZSAoKTsKKyAgaWYgKG1hc2tfdG9f d2kgKG1fbm9uemVyb19tYXNrLCB0KSAhPSBtYXNrX3RvX3dpIChyLm1fbm9uemVyb19tYXNrLCB0 KSkKICAgICB7Ci0gICAgICBtX25vbnplcm9fbWFzayA9IGdldF9ub256ZXJvX2JpdHMgKCkgJiBy LmdldF9ub256ZXJvX2JpdHMgKCk7CisgICAgICB3aWRlX2ludCBueiA9IGdldF9ub256ZXJvX2Jp dHMgKCkgJiByLmdldF9ub256ZXJvX2JpdHMgKCk7CisgICAgICBtX25vbnplcm9fbWFzayA9IHdp ZGVfaW50X3RvX3RyZWUgKHQsIG56KTsKICAgICAgIGlmIChzZXRfcmFuZ2VfZnJvbV9ub256ZXJv X2JpdHMgKCkpCiAJcmV0dXJuIHRydWU7CiAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKQEAgLTI5NzAs MTAgKzMwMDcsMjAgQEAgaXJhbmdlOjp1bmlvbl9ub256ZXJvX2JpdHMgKGNvbnN0IGlyYW5nZSAm cikKIHsKICAgZ2NjX2NoZWNraW5nX2Fzc2VydCAoIXVuZGVmaW5lZF9wICgpICYmICFyLnVuZGVm aW5lZF9wICgpKTsKIAorICBpZiAoIW1fbm9uemVyb19tYXNrICYmICFyLm1fbm9uemVyb19tYXNr KQorICAgIHsKKyAgICAgIG5vcm1hbGl6ZV9raW5kICgpOworICAgICAgaWYgKGZsYWdfY2hlY2tp bmcpCisJdmVyaWZ5X3JhbmdlICgpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICBi b29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgaWYgKG1fbm9uemVyb19tYXNrICE9IHIubV9ub256ZXJv X21hc2spCisgIHRyZWUgdCA9IHR5cGUgKCk7CisgIGlmIChtYXNrX3RvX3dpIChtX25vbnplcm9f bWFzaywgdCkgIT0gbWFza190b193aSAoci5tX25vbnplcm9fbWFzaywgdCkpCiAgICAgewotICAg ICAgbV9ub256ZXJvX21hc2sgPSBnZXRfbm9uemVyb19iaXRzICgpIHwgci5nZXRfbm9uemVyb19i aXRzICgpOworICAgICAgd2lkZV9pbnQgbnogPSBnZXRfbm9uemVyb19iaXRzICgpIHwgci5nZXRf bm9uemVyb19iaXRzICgpOworICAgICAgbV9ub256ZXJvX21hc2sgPSB3aWRlX2ludF90b190cmVl ICh0LCBueik7CiAgICAgICAvLyBObyBuZWVkIHRvIGNhbGwgc2V0X3JhbmdlX2Zyb21fbm9uemVy b19iaXRzLCBiZWNhdXNlIHdlJ2xsCiAgICAgICAvLyBuZXZlciBuYXJyb3cgdGhlIHJhbmdlLiAg QmVzaWRlcywgaXQgd291bGQgY2F1c2UgZW5kbGVzcwogICAgICAgLy8gcmVjdXJzaW9uIGJlY2F1 c2Ugb2YgdGhlIHVuaW9uXyBpbgpkaWZmIC0tZ2l0IGEvZ2NjL3ZhbHVlLXJhbmdlLmggYi9nY2Mv dmFsdWUtcmFuZ2UuaAppbmRleCBiMDZjYTc0NzdjZC4uNDg0ZjkxMWJkOTAgMTAwNjQ0Ci0tLSBh L2djYy92YWx1ZS1yYW5nZS5oCisrKyBiL2djYy92YWx1ZS1yYW5nZS5oCkBAIC0yMTUsNyArMjE1 LDcgQEAgcHJpdmF0ZToKICAgYm9vbCBpbnRlcnNlY3QgKGNvbnN0IHdpZGVfaW50JiBsYiwgY29u c3Qgd2lkZV9pbnQmIHViKTsKICAgdW5zaWduZWQgY2hhciBtX251bV9yYW5nZXM7CiAgIHVuc2ln bmVkIGNoYXIgbV9tYXhfcmFuZ2VzOwotICB3aWRlX2ludCBtX25vbnplcm9fbWFzazsKKyAgdHJl ZSBtX25vbnplcm9fbWFzazsKICAgdHJlZSAqbV9iYXNlOwogfTsKIApAQCAtNjgzLDExICs2ODMs MTEgQEAgaXJhbmdlOjp2YXJ5aW5nX2NvbXBhdGlibGVfcCAoKSBjb25zdAogICBpZiAoSU5URUdS QUxfVFlQRV9QICh0KSkKICAgICByZXR1cm4gKHdpOjp0b193aWRlIChsKSA9PSB3aTo6bWluX3Zh bHVlIChwcmVjLCBzaWduKQogCSAgICAmJiB3aTo6dG9fd2lkZSAodSkgPT0gd2k6Om1heF92YWx1 ZSAocHJlYywgc2lnbikKLQkgICAgJiYgbV9ub256ZXJvX21hc2sgPT0gLTEpOworCSAgICAmJiAo IW1fbm9uemVyb19tYXNrIHx8IHdpOjp0b193aWRlIChtX25vbnplcm9fbWFzaykgPT0gLTEpKTsK ICAgaWYgKFBPSU5URVJfVFlQRV9QICh0KSkKICAgICByZXR1cm4gKHdpOjp0b193aWRlIChsKSA9 PSAwCiAJICAgICYmIHdpOjp0b193aWRlICh1KSA9PSB3aTo6bWF4X3ZhbHVlIChwcmVjLCBzaWdu KQotCSAgICAmJiBtX25vbnplcm9fbWFzayA9PSAtMSk7CisJICAgICYmICghbV9ub256ZXJvX21h c2sgfHwgd2k6OnRvX3dpZGUgKG1fbm9uemVyb19tYXNrKSA9PSAtMSkpOwogICByZXR1cm4gdHJ1 ZTsKIH0KIApAQCAtNzU0LDYgKzc1NCw4IEBAIGd0X2dnY19teCAoaXJhbmdlICp4KQogICAgICAg Z3RfZ2djX214ICh4LT5tX2Jhc2VbaSAqIDJdKTsKICAgICAgIGd0X2dnY19teCAoeC0+bV9iYXNl W2kgKiAyICsgMV0pOwogICAgIH0KKyAgaWYgKHgtPm1fbm9uemVyb19tYXNrKQorICAgIGd0X2dn Y19teCAoeC0+bV9ub256ZXJvX21hc2spOwogfQogCiBpbmxpbmUgdm9pZApAQCAtNzY0LDYgKzc2 Niw4IEBAIGd0X3BjaF9ueCAoaXJhbmdlICp4KQogICAgICAgZ3RfcGNoX254ICh4LT5tX2Jhc2Vb aSAqIDJdKTsKICAgICAgIGd0X3BjaF9ueCAoeC0+bV9iYXNlW2kgKiAyICsgMV0pOwogICAgIH0K KyAgaWYgKHgtPm1fbm9uemVyb19tYXNrKQorICAgIGd0X3BjaF9ueCAoeC0+bV9ub256ZXJvX21h c2spOwogfQogCiBpbmxpbmUgdm9pZApAQCAtNzc0LDYgKzc3OCw4IEBAIGd0X3BjaF9ueCAoaXJh bmdlICp4LCBndF9wb2ludGVyX29wZXJhdG9yIG9wLCB2b2lkICpjb29raWUpCiAgICAgICBvcCAo JngtPm1fYmFzZVtpICogMl0sIE5VTEwsIGNvb2tpZSk7CiAgICAgICBvcCAoJngtPm1fYmFzZVtp ICogMiArIDFdLCBOVUxMLCBjb29raWUpOwogICAgIH0KKyAgaWYgKHgtPm1fbm9uemVyb19tYXNr KQorICAgIG9wICgmeC0+bV9ub256ZXJvX21hc2ssIE5VTEwsIGNvb2tpZSk7CiB9CiAKIHRlbXBs YXRlPHVuc2lnbmVkIE4+CkBAIC04NjgsNiArODc0LDcgQEAgaXJhbmdlOjpzZXRfdW5kZWZpbmVk ICgpCiB7CiAgIG1fa2luZCA9IFZSX1VOREVGSU5FRDsKICAgbV9udW1fcmFuZ2VzID0gMDsKKyAg bV9ub256ZXJvX21hc2sgPSBOVUxMOwogfQogCiBpbmxpbmUgdm9pZApAQCAtODc1LDExICs4ODIs NyBAQCBpcmFuZ2U6OnNldF92YXJ5aW5nICh0cmVlIHR5cGUpCiB7CiAgIG1fa2luZCA9IFZSX1ZB UllJTkc7CiAgIG1fbnVtX3JhbmdlcyA9IDE7Ci0KLSAgaWYgKHR5cGUgPT0gZXJyb3JfbWFya19u b2RlKQotICAgIG1fbm9uemVyb19tYXNrID0gd2k6OnNod2kgKC0xLCAxKTsKLSAgZWxzZQotICAg IG1fbm9uemVyb19tYXNrID0gd2k6OnNod2kgKC0xLCBUWVBFX1BSRUNJU0lPTiAodHlwZSkpOwor ICBtX25vbnplcm9fbWFzayA9IE5VTEw7CiAKICAgaWYgKElOVEVHUkFMX1RZUEVfUCAodHlwZSkp CiAgICAgewotLSAKMi4zNy4xCgo= --0000000000002f0f3205ea6e5dc3--