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 6220C3858D28 for ; Wed, 15 Feb 2023 17:06:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6220C3858D28 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=1676480759; 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=aK4HThbvwEc68Lt8VW5bVThlwgs6BmYB7Cz9CSvE1cw=; b=U+IOFEgqvh1SvnKpyVact1zlHblIfBlkJB+rHvr6CLGSRyzEreZ0OD08/2jSvprGhEUDGl HoHfBARrHdPBp2SCl3e8N3FV8MVLWl6UpG6xBMYAkAMFgXf36jtq3+yjsemXn3u71XVMS3 8tPMovHvGzAR4ZfGXxq4S0znRTYPhiU= Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-557-7P4Psg3cPzyvx5m3Lsv0Dg-1; Wed, 15 Feb 2023 12:05:57 -0500 X-MC-Unique: 7P4Psg3cPzyvx5m3Lsv0Dg-1 Received: by mail-qt1-f199.google.com with SMTP id fp20-20020a05622a509400b003bcf4239f33so2642041qtb.7 for ; Wed, 15 Feb 2023 09:05:55 -0800 (PST) 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:message-id :reply-to; bh=CBRwKwwE5u0tEPN/zRSVzRv62CjyKMvTcHWFtfb65oY=; b=dlLLjaTtOMNnyC8+HDzwBCJu2VQr7fIZMW7l8tXU92N25i5gaj/vtSIk7tM3Cxt/lU qi8GrVoOGQheH9aHDtZTgAwQC/TNP/cfO1JHPmeHJt0L0syHPZJ2tvNnRcbFlUOWRgVA BjG795F5X5OPkIDv7wfmkNahqufLfcDPRc6itaRyCsimULdSXDF6feGye1Q/IeRVZgfy TcmhyBDhGbfJaWcesNhDg6Z0k56FW94UCNpF/3SHEMfknLEt/5i0nXE876yqMfq246HM rKn91HtPZGQ2OUmR/2LM8GfV9Q61ia6Wo8AAU9l5PTDyvZF5AC+AoBsnQDn0QkiSCT6e QtYw== X-Gm-Message-State: AO0yUKVFxzChZknVNYoVsk6h2bmyqLe/ymxWDT1gs6GKjqljYWLRa2WF D3QSIGbpk/ZiirHSuNo0fgYjOysBLkpLaGkxlaWV2j3tznmtXGQJslTxwmcoz8GlzKCDWe7ihoW BN6XItpqU3NsVqkPyHZmfenZpAshwrw9LlBbcZJ41eTKEz8oxeqRS2wqwqRQy2ZIOTpRPsJt9hQ k= X-Received: by 2002:a05:622a:5ce:b0:3b8:629e:afd9 with SMTP id d14-20020a05622a05ce00b003b8629eafd9mr3948611qtb.17.1676480754815; Wed, 15 Feb 2023 09:05:54 -0800 (PST) X-Google-Smtp-Source: AK7set93USxCHYjwOuKoeFAqb1XXW638Gb+fY98jihyqmgTvpCTexHZihtRU6rLGXVqq/q4AaeWb0g== X-Received: by 2002:a05:622a:5ce:b0:3b8:629e:afd9 with SMTP id d14-20020a05622a05ce00b003b8629eafd9mr3948550qtb.17.1676480754278; Wed, 15 Feb 2023 09:05:54 -0800 (PST) Received: from ?IPV6:2607:fea8:a263:f600::de2a? ([2607:fea8:a263:f600::de2a]) by smtp.gmail.com with ESMTPSA id t23-20020ac87397000000b003ab7aee56a0sm13304071qtp.39.2023.02.15.09.05.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 15 Feb 2023 09:05:53 -0800 (PST) Message-ID: <86ad2755-1e70-6c19-89ed-7817d61a5053@redhat.com> Date: Wed, 15 Feb 2023 12:05:52 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [PATCH] PR tree-optimization/108697 - Create a lazy ssa_cache X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------gXsXe2HD2uBg4DJeHopskQX4" Content-Language: en-US X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,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. --------------gXsXe2HD2uBg4DJeHopskQX4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit This patch implements the suggestion that we have an alternative ssa-cache which does not zero memory, and instead uses a bitmap to track whether a value is currently set or not.  It roughly mimics what path_range_query was doing internally. For sparsely used cases, expecially in large programs, this is more efficient.  I changed path_range_query to use this, and removed it old bitmap (and a hack or two around PHI calculations), and also utilized this is the assume_query class. Performance wise, the patch doesn't affect VRP (since that still uses the original version).  Switching to the lazy version caused a slowdown of 2.5% across VRP. There was a noticeable improvement elsewhere.,  across 230 GCC source files, threading ran over 12% faster!.  Overall compilation improved by 0.3%  Not sure it makes much difference in compiler.i, but it shouldn't hurt. bootstraps on x86_64-pc-linux-gnu with no regressions.   OK for trunk?  or do you want to wait for the next release... Andrew --------------gXsXe2HD2uBg4DJeHopskQX4 Content-Type: text/x-patch; charset=UTF-8; name="0001-Create-a-lazy-ssa_cache.patch" Content-Disposition: attachment; filename="0001-Create-a-lazy-ssa_cache.patch" Content-Transfer-Encoding: base64 RnJvbSBhNDczNmI0MDJkOTViMTg0NjU5ODQ2YmEzMDhjZTUxZjcwODQ3MmQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogV2VkLCA4IEZlYiAyMDIzIDE3OjQzOjQ1IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxLzJd IENyZWF0ZSBhIGxhenkgc3NhX2NhY2hlCgpTcGFyc2VseSB1c2VkIHNzYSBuYW1lIGNhY2hlcyBj YW4gYmVuZWZpdCBmcm9tIHVzaW5nIGEgYml0bWFwIHRvCmRldGVybWluZSBpZiBhIG5hbWUgYWxy ZWFkeSBoYXMgYW4gZW50cnkuICBVdGlsaXplIGl0IGluIHRoZSBwYXRoIHF1ZXJ5CmFuZCByZW1v dmUgaXRzIHByaXZhdGUgYml0bWFwIGZvciB0cmFja2luZyB0aGUgc2FtZSBpbmZvLgpBbHNvIHVz ZSBpdCBpbiB0aGUgImFzc3VtZSIgcXVlcnkgY2xhc3MuCgoJKiBnaW1wbGUtcmFuZ2UtY2FjaGUu Y2MgKHNzYV9nbG9iYWxfY2FjaGU6OmNsZWFyX2dsb2JhbF9yYW5nZSk6IERvCglub3QgY2xlYXIg dGhlIHZlY3RvciBvbiBhbiBvdXQgb2YgcmFuZ2UgcXVlcnkuCgkoc3NhX2xhenlfY2FjaGU6OnNl dF9nbG9iYWxfcmFuZ2UpOiBOZXcuCgkqIGdpbXBsZS1yYW5nZS1jYWNoZS5oIChjbGFzcyBzc2Ff bGF6eV9jYWNoZSk6IE5ldy4KCShzc2FfbGF6eV9jYWNoZTo6c3NhX2xhenlfY2FjaGUpOiBOZXcu Cgkoc3NhX2xhenlfY2FjaGU6On5zc2FfbGF6eV9jYWNoZSk6IE5ldy4KCShzc2FfbGF6eV9jYWNo ZTo6Z2V0X2dsb2JhbF9yYW5nZSk6IE5ldy4KCShzc2FfbGF6eV9jYWNoZTo6Y2xlYXJfZ2xvYmFs X3JhbmdlKTogTmV3LgoJKHNzYV9sYXp5X2NhY2hlOjpjbGVhcik6IE5ldy4KCShzc2FfbGF6eV9j YWNoZTo6ZHVtcCk6IE5ldy4KCSogZ2ltcGxlLXJhbmdlLXBhdGguY2MgKHBhdGhfcmFuZ2VfcXVl cnk6OnBhdGhfcmFuZ2VfcXVlcnkpOiBEbwoJbm90IGFsbG9jYXRlIGEgc3NhX2dsb2JhbF9jYWNo ZSBvYmplY3Qgbm90IGhhc19jYWNoZSBiaXRtYXAuCgkocGF0aF9yYW5nZV9xdWVyeTo6fnBhdGhf cmFuZ2VfcXVlcnkpOiBEbyBub3QgZnJlZSBvYmplY3RzLgoJKHBhdGhfcmFuZ2VfcXVlcnk6OmNs ZWFyX2NhY2hlKTogUmVtb3ZlLgoJKHBhdGhfcmFuZ2VfcXVlcnk6OmdldF9jYWNoZSk6IEFkanVz dC4KCShwYXRoX3JhbmdlX3F1ZXJ5OjpzZXRfY2FjaGUpOiBSZW1vdmUuCgkocGF0aF9yYW5nZV9x dWVyeTo6ZHVtcCk6IERvbid0IGNhbGwgdGhyb3VnaCBhIHBvaW50ZXIuCgkocGF0aF9yYW5nZV9x dWVyeTo6aW50ZXJuYWxfcmFuZ2Vfb2ZfZXhwcik6IFNldCBjYWNoZSBkaXJlY3RseS4KCShwYXRo X3JhbmdlX3F1ZXJ5OjpyZXNldF9wYXRoKTogQ2xlYXIgY2FjaGUgZGlyZWN0bHkuCgkocGF0aF9y YW5nZV9xdWVyeTo6c3NhX3JhbmdlX2luX3BoaSk6IEZvbGQgd2l0aCBnbG9iYWxzIG9ubHkuCgko cGF0aF9yYW5nZV9xdWVyeTo6Y29tcHV0ZV9yYW5nZXNfaW5fcGhpcyk6IFNpbXBseSBzZXQgcmFu Z2UuCgkocGF0aF9yYW5nZV9xdWVyeTo6Y29tcHV0ZV9yYW5nZXNfaW5fYmxvY2spOiBDYWxsIGNh Y2hlIGRpcmVjdGx5LgoJKiBnaW1wbGUtcmFuZ2UtcGF0aC5oIChjbGFzcyBwYXRoX3JhbmdlX3F1 ZXJ5KTogUmVwbGFjZSBiaXRtYXAKCWFuZCBjYWNoZSBwb2ludGVyIHdpdGggbGF6eSBjYWNoZSBv YmplY3QuCgkqIGdpbXBsZS1yYW5nZS5oIChjbGFzcyBhc3N1bWVfcXVlcnkpOiBVc2Ugc3NhX2xh enlfY2FjaGUuCi0tLQogZ2NjL2dpbXBsZS1yYW5nZS1jYWNoZS5jYyB8IDI0ICsrKysrKysrKysr Ky0tCiBnY2MvZ2ltcGxlLXJhbmdlLWNhY2hlLmggIHwgMzMgKysrKysrKysrKysrKysrKysrKy0K IGdjYy9naW1wbGUtcmFuZ2UtcGF0aC5jYyAgfCA2NiArKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIGdjYy9naW1wbGUtcmFuZ2UtcGF0aC5oICAgfCAgNyArLS0tLQogZ2Nj L2dpbXBsZS1yYW5nZS5oICAgICAgICB8ICAyICstCiA1IGZpbGVzIGNoYW5nZWQsIDcwIGluc2Vy dGlvbnMoKyksIDYyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtcmFuZ2Ut Y2FjaGUuY2MgYi9nY2MvZ2ltcGxlLXJhbmdlLWNhY2hlLmNjCmluZGV4IDU0NjI2MmM0Nzk0Li45 YmZiZGIyYzliMyAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1yYW5nZS1jYWNoZS5jYworKysgYi9n Y2MvZ2ltcGxlLXJhbmdlLWNhY2hlLmNjCkBAIC01MjUsMTQgKzUyNSwxNCBAQCBzc2FfZ2xvYmFs X2NhY2hlOjpzZXRfZ2xvYmFsX3JhbmdlICh0cmVlIG5hbWUsIGNvbnN0IHZyYW5nZSAmcikKICAg cmV0dXJuIG0gIT0gTlVMTDsKIH0KIAotLy8gU2V0IHRoZSByYW5nZSBmb3IgTkFNRSB0byBSIGlu IHRoZSBnbG9uYmFsIGNhY2hlLgorLy8gU2V0IHRoZSByYW5nZSBmb3IgTkFNRSB0byBSIGluIHRo ZSBnbG9iYWwgY2FjaGUuCiAKIHZvaWQKIHNzYV9nbG9iYWxfY2FjaGU6OmNsZWFyX2dsb2JhbF9y YW5nZSAodHJlZSBuYW1lKQogewogICB1bnNpZ25lZCB2ID0gU1NBX05BTUVfVkVSU0lPTiAobmFt ZSk7CiAgIGlmICh2ID49IG1fdGFiLmxlbmd0aCAoKSkKLSAgICBtX3RhYi5zYWZlX2dyb3dfY2xl YXJlZCAobnVtX3NzYV9uYW1lcyArIDEpOworICAgIHJldHVybjsKICAgbV90YWJbdl0gPSBOVUxM OwogfQogCkBAIC01NzksNiArNTc5LDI2IEBAIHNzYV9nbG9iYWxfY2FjaGU6OmR1bXAgKEZJTEUg KmYpCiAgICAgZnB1dGMgKCdcbicsIGYpOwogfQogCisKKy8vIFNldCByYW5nZSBvZiBOQU1FIHRv IFIgaW4gYSBsYXp5IGNhY2hlLiAgUmV0dXJuIEZBTFNFIGlmIGl0IGRpZCBub3QgYWxyZWFkeQor Ly8gaGF2ZSBhIHJhbmdlLgorCitib29sCitzc2FfbGF6eV9jYWNoZTo6c2V0X2dsb2JhbF9yYW5n ZSAodHJlZSBuYW1lLCBjb25zdCB2cmFuZ2UgJnIpCit7CisgIHVuc2lnbmVkIHYgPSBTU0FfTkFN RV9WRVJTSU9OIChuYW1lKTsKKyAgaWYgKCFiaXRtYXBfc2V0X2JpdCAoYWN0aXZlX3AsIHYpKQor ICAgIHsKKyAgICAgIC8vIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnksIHNpbXBseSBzZXQgaXQu CisgICAgICBnY2NfY2hlY2tpbmdfYXNzZXJ0ICh2IDwgbV90YWIubGVuZ3RoICgpKTsKKyAgICAg IHJldHVybiBzc2FfZ2xvYmFsX2NhY2hlOjpzZXRfZ2xvYmFsX3JhbmdlIChuYW1lLCByKTsKKyAg ICB9CisgIGlmICh2ID49IG1fdGFiLmxlbmd0aCAoKSkKKyAgICBtX3RhYi5zYWZlX2dyb3cgKG51 bV9zc2FfbmFtZXMgKyAxKTsKKyAgbV90YWJbdl0gPSBtX3JhbmdlX2FsbG9jYXRvci0+Y2xvbmUg KHIpOworICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIApkaWZm IC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS1jYWNoZS5oIGIvZ2NjL2dpbXBsZS1yYW5nZS1jYWNo ZS5oCmluZGV4IDRmZjQzNWRjNWMxLi5mMTc5OWI0NTczOCAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBs ZS1yYW5nZS1jYWNoZS5oCisrKyBiL2djYy9naW1wbGUtcmFuZ2UtY2FjaGUuaApAQCAtNjIsMTEg KzYyLDQyIEBAIHB1YmxpYzoKICAgdm9pZCBjbGVhcl9nbG9iYWxfcmFuZ2UgKHRyZWUgbmFtZSk7 CiAgIHZvaWQgY2xlYXIgKCk7CiAgIHZvaWQgZHVtcCAoRklMRSAqZiA9IHN0ZGVycik7Ci1wcml2 YXRlOgorcHJvdGVjdGVkOgogICB2ZWM8dnJhbmdlICo+IG1fdGFiOwogICB2cmFuZ2VfYWxsb2Nh dG9yICptX3JhbmdlX2FsbG9jYXRvcjsKIH07CiAKKy8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgZ2xv YmFsIGNhY2hlLCBleGNlcHQgaXQgbWFpbnRhaW5zIGFuIGFjdGl2ZSBiaXRtYXAKKy8vIHJhdGhl ciB0aGFuIGRlcGVuZGluZyBvbiBhIHplcm8nZCBvdXQgdmVjdG9yIG9mIHBvaW50ZXJzLiAgVGhp cyBpcyBiZXR0ZXIKKy8vIGZvciBzcGFyc2VseS9saWdodGx5IHVzZWQgY2FjaGVzLgorLy8gSXQg Y291bGQgYmUgbWFkZSBhIGZ1bGx5IGRlcml2ZWQgY2xhc3MsIGJ1dCBhdCB0aGlzIHBvaW50IHRo ZXJlIGRvZXNudCBzZWVtCisvLyB0byBiZSBhIG5lZWQgdG8gdGFrZSB0aGUgcGVyZm9ybWFuY2Ug aGl0IGZvciBpdC4KKworY2xhc3Mgc3NhX2xhenlfY2FjaGUgOiBwcm90ZWN0ZWQgc3NhX2dsb2Jh bF9jYWNoZQoreworcHVibGljOgorICBpbmxpbmUgc3NhX2xhenlfY2FjaGUgKCkgeyBhY3RpdmVf cCA9IEJJVE1BUF9BTExPQyAoTlVMTCk7IH0KKyAgaW5saW5lIH5zc2FfbGF6eV9jYWNoZSAoKSB7 IEJJVE1BUF9GUkVFIChhY3RpdmVfcCk7IH0KKyAgYm9vbCBzZXRfZ2xvYmFsX3JhbmdlICh0cmVl IG5hbWUsIGNvbnN0IHZyYW5nZSAmcik7CisgIGlubGluZSBib29sIGdldF9nbG9iYWxfcmFuZ2Ug KHZyYW5nZSAmciwgdHJlZSBuYW1lKSBjb25zdDsKKyAgaW5saW5lIHZvaWQgY2xlYXJfZ2xvYmFs X3JhbmdlICh0cmVlIG5hbWUpCisgICAgeyBiaXRtYXBfY2xlYXJfYml0IChhY3RpdmVfcCwgU1NB X05BTUVfVkVSU0lPTiAobmFtZSkpOyB9IDsKKyAgaW5saW5lIHZvaWQgY2xlYXIgKCkgeyBiaXRt YXBfY2xlYXIgKGFjdGl2ZV9wKTsgfQorICBpbmxpbmUgdm9pZCBkdW1wIChGSUxFICpmID0gc3Rk ZXJyKSB7IHNzYV9nbG9iYWxfY2FjaGU6OmR1bXAgKGYpOyB9Citwcm90ZWN0ZWQ6CisgIGJpdG1h cCBhY3RpdmVfcDsKK307CisKKy8vIFJldHVybiBUUlVFIGlmIE5BTUUgaGFzIGEgcmFuZ2UsIGFu ZCByZXR1cm4gaXQgaW4gUi4KKworYm9vbAorc3NhX2xhenlfY2FjaGU6OmdldF9nbG9iYWxfcmFu Z2UgKHZyYW5nZSAmciwgdHJlZSBuYW1lKSBjb25zdAoreworICBpZiAoIWJpdG1hcF9iaXRfcCAo YWN0aXZlX3AsIFNTQV9OQU1FX1ZFUlNJT04gKG5hbWUpKSkKKyAgICByZXR1cm4gZmFsc2U7Cisg IHJldHVybiBzc2FfZ2xvYmFsX2NhY2hlOjpnZXRfZ2xvYmFsX3JhbmdlIChyLCBuYW1lKTsKK30K KwogLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBhbGwgdGhlIGNhY2hlcyBhIGdsb2JhbCByYW5nZXIg bWF5IG5lZWQsIGFuZCBtYWtlcyAKIC8vIHRoZW0gYXZhaWxhYmxlIGZvciBnb3JpLWNvbXB1dGVz IHRvIHF1ZXJ5IHNvIG91dGdvaW5nIGVkZ2VzIGNhbiBiZQogLy8gcHJvcGVybHkgY2FsY3VsYXRl ZC4KZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtcmFuZ2UtcGF0aC5jYyBiL2djYy9naW1wbGUtcmFu Z2UtcGF0aC5jYwppbmRleCA3YzQ1YTg4MTVjYi4uMTMzMDNhNDI2MjcgMTAwNjQ0Ci0tLSBhL2dj Yy9naW1wbGUtcmFuZ2UtcGF0aC5jYworKysgYi9nY2MvZ2ltcGxlLXJhbmdlLXBhdGguY2MKQEAg LTQwLDggKzQwLDcgQEAgcGF0aF9yYW5nZV9xdWVyeTo6cGF0aF9yYW5nZV9xdWVyeSAoZ2ltcGxl X3JhbmdlciAmcmFuZ2VyLAogCQkJCSAgICBjb25zdCB2ZWM8YmFzaWNfYmxvY2s+ICZwYXRoLAog CQkJCSAgICBjb25zdCBiaXRtYXBfaGVhZCAqZGVwZW5kZW5jaWVzLAogCQkJCSAgICBib29sIHJl c29sdmUpCi0gIDogbV9jYWNoZSAobmV3IHNzYV9nbG9iYWxfY2FjaGUpLAotICAgIG1faGFzX2Nh Y2hlX2VudHJ5IChCSVRNQVBfQUxMT0MgKE5VTEwpKSwKKyAgOiBtX2NhY2hlICgpLAogICAgIG1f cmFuZ2VyIChyYW5nZXIpLAogICAgIG1fcmVzb2x2ZSAocmVzb2x2ZSkKIHsKQEAgLTUxLDggKzUw LDcgQEAgcGF0aF9yYW5nZV9xdWVyeTo6cGF0aF9yYW5nZV9xdWVyeSAoZ2ltcGxlX3JhbmdlciAm cmFuZ2VyLAogfQogCiBwYXRoX3JhbmdlX3F1ZXJ5OjpwYXRoX3JhbmdlX3F1ZXJ5IChnaW1wbGVf cmFuZ2VyICZyYW5nZXIsIGJvb2wgcmVzb2x2ZSkKLSAgOiBtX2NhY2hlIChuZXcgc3NhX2dsb2Jh bF9jYWNoZSksCi0gICAgbV9oYXNfY2FjaGVfZW50cnkgKEJJVE1BUF9BTExPQyAoTlVMTCkpLAor ICA6IG1fY2FjaGUgKCksCiAgICAgbV9yYW5nZXIgKHJhbmdlciksCiAgICAgbV9yZXNvbHZlIChy ZXNvbHZlKQogewpAQCAtNjIsOCArNjAsNiBAQCBwYXRoX3JhbmdlX3F1ZXJ5OjpwYXRoX3Jhbmdl X3F1ZXJ5IChnaW1wbGVfcmFuZ2VyICZyYW5nZXIsIGJvb2wgcmVzb2x2ZSkKIHBhdGhfcmFuZ2Vf cXVlcnk6On5wYXRoX3JhbmdlX3F1ZXJ5ICgpCiB7CiAgIGRlbGV0ZSBtX29yYWNsZTsKLSAgQklU TUFQX0ZSRUUgKG1faGFzX2NhY2hlX2VudHJ5KTsKLSAgZGVsZXRlIG1fY2FjaGU7CiB9CiAKIC8v IFJldHVybiBUUlVFIGlmIE5BTUUgaXMgYW4gZXhpdCBkZXBlbmRlbmN5IGZvciB0aGUgcGF0aC4K QEAgLTc1LDE2ICs3MSw2IEBAIHBhdGhfcmFuZ2VfcXVlcnk6OmV4aXRfZGVwZW5kZW5jeV9wICh0 cmVlIG5hbWUpCiAJICAmJiBiaXRtYXBfYml0X3AgKG1fZXhpdF9kZXBlbmRlbmNpZXMsIFNTQV9O QU1FX1ZFUlNJT04gKG5hbWUpKSk7CiB9CiAKLS8vIE1hcmsgY2FjaGUgZW50cnkgZm9yIE5BTUUg YXMgdW51c2VkLgotCi12b2lkCi1wYXRoX3JhbmdlX3F1ZXJ5OjpjbGVhcl9jYWNoZSAodHJlZSBu YW1lKQotewotICB1bnNpZ25lZCB2ID0gU1NBX05BTUVfVkVSU0lPTiAobmFtZSk7Ci0gIGJpdG1h cF9jbGVhcl9iaXQgKG1faGFzX2NhY2hlX2VudHJ5LCB2KTsKLX0KLQotLy8gSWYgTkFNRSBoYXMg YSBjYWNoZSBlbnRyeSwgcmV0dXJuIGl0IGluIFIsIGFuZCByZXR1cm4gVFJVRS4KIAogaW5saW5l IGJvb2wKIHBhdGhfcmFuZ2VfcXVlcnk6OmdldF9jYWNoZSAodnJhbmdlICZyLCB0cmVlIG5hbWUp CkBAIC05MiwyMSArNzgsNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5OjpnZXRfY2FjaGUgKHZyYW5nZSAm ciwgdHJlZSBuYW1lKQogICBpZiAoIWdpbXBsZV9yYW5nZV9zc2FfcCAobmFtZSkpCiAgICAgcmV0 dXJuIGdldF9nbG9iYWxfcmFuZ2VfcXVlcnkgKCktPnJhbmdlX29mX2V4cHIgKHIsIG5hbWUpOwog Ci0gIHVuc2lnbmVkIHYgPSBTU0FfTkFNRV9WRVJTSU9OIChuYW1lKTsKLSAgaWYgKGJpdG1hcF9i aXRfcCAobV9oYXNfY2FjaGVfZW50cnksIHYpKQotICAgIHJldHVybiBtX2NhY2hlLT5nZXRfZ2xv YmFsX3JhbmdlIChyLCBuYW1lKTsKLQotICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFNldCB0aGUg Y2FjaGUgZW50cnkgZm9yIE5BTUUgdG8gUi4KLQotdm9pZAotcGF0aF9yYW5nZV9xdWVyeTo6c2V0 X2NhY2hlIChjb25zdCB2cmFuZ2UgJnIsIHRyZWUgbmFtZSkKLXsKLSAgdW5zaWduZWQgdiA9IFNT QV9OQU1FX1ZFUlNJT04gKG5hbWUpOwotICBiaXRtYXBfc2V0X2JpdCAobV9oYXNfY2FjaGVfZW50 cnksIHYpOwotICBtX2NhY2hlLT5zZXRfZ2xvYmFsX3JhbmdlIChuYW1lLCByKTsKKyAgcmV0dXJu IG1fY2FjaGUuZ2V0X2dsb2JhbF9yYW5nZSAociwgbmFtZSk7CiB9CiAKIHZvaWQKQEAgLTEzMCw3 ICsxMDIsNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5OjpkdW1wIChGSUxFICpkdW1wX2ZpbGUpCiAgICAg ICBmcHJpbnRmIChkdW1wX2ZpbGUsICJcbiIpOwogICAgIH0KIAotICBtX2NhY2hlLT5kdW1wIChk dW1wX2ZpbGUpOworICBtX2NhY2hlLmR1bXAgKGR1bXBfZmlsZSk7CiB9CiAKIHZvaWQKQEAgLTE3 NCw3ICsxNDYsNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5OjppbnRlcm5hbF9yYW5nZV9vZl9leHByICh2 cmFuZ2UgJnIsIHRyZWUgbmFtZSwgZ2ltcGxlICpzdG10KQogICBpZiAobV9yZXNvbHZlICYmIGRl ZmluZWRfb3V0c2lkZV9wYXRoIChuYW1lKSkKICAgICB7CiAgICAgICByYW5nZV9vbl9wYXRoX2Vu dHJ5IChyLCBuYW1lKTsKLSAgICAgIHNldF9jYWNoZSAociwgbmFtZSk7CisgICAgICBtX2NhY2hl LnNldF9nbG9iYWxfcmFuZ2UgKG5hbWUsIHIpOwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog CkBAIC0xODgsNyArMTYwLDcgQEAgcGF0aF9yYW5nZV9xdWVyeTo6aW50ZXJuYWxfcmFuZ2Vfb2Zf ZXhwciAodnJhbmdlICZyLCB0cmVlIG5hbWUsIGdpbXBsZSAqc3RtdCkKIAkgIHIuaW50ZXJzZWN0 IChnbG9iKTsKIAl9CiAKLSAgICAgIHNldF9jYWNoZSAociwgbmFtZSk7CisgICAgICBtX2NhY2hl LnNldF9nbG9iYWxfcmFuZ2UgKG5hbWUsIHIpOwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog CkBAIC0yMjUsNyArMTk3LDcgQEAgcGF0aF9yYW5nZV9xdWVyeTo6cmVzZXRfcGF0aCAoY29uc3Qg dmVjPGJhc2ljX2Jsb2NrPiAmcGF0aCwKICAgbV9wYXRoID0gcGF0aC5jb3B5ICgpOwogICBtX3Bv cyA9IG1fcGF0aC5sZW5ndGggKCkgLSAxOwogICBtX3VuZGVmaW5lZF9wYXRoID0gZmFsc2U7Ci0g IGJpdG1hcF9jbGVhciAobV9oYXNfY2FjaGVfZW50cnkpOworICBtX2NhY2hlLmNsZWFyICgpOwog CiAgIGNvbXB1dGVfcmFuZ2VzIChkZXBlbmRlbmNpZXMpOwogfQpAQCAtMjU1LDcgKzIyNyw3IEBA IHBhdGhfcmFuZ2VfcXVlcnk6OnNzYV9yYW5nZV9pbl9waGkgKHZyYW5nZSAmciwgZ3BoaSAqcGhp KQogICAgICAgaWYgKG1fcmVzb2x2ZSAmJiBtX3Jhbmdlci5yYW5nZV9vZl9leHByIChyLCBuYW1l LCBwaGkpKQogCXJldHVybjsKIAotICAgICAgLy8gVHJ5IHRvIGZvbGQgdGhlIHBoaSBleGNsdXNp dmVseSB3aXRoIGdsb2JhbCBvciBjYWNoZWQgdmFsdWVzLgorICAgICAgLy8gVHJ5IHRvIGZvbGQg dGhlIHBoaSBleGNsdXNpdmVseSB3aXRoIGdsb2JhbCB2YWx1ZXMuCiAgICAgICAvLyBUaGlzIHdp bGwgZ2V0IHRoaW5ncyBsaWtlIFBISSA8NSg5OSksIDYoODgpPi4gIFdlIGRvIHRoaXMgYnkKICAg ICAgIC8vIGNhbGxpbmcgcmFuZ2Vfb2ZfZXhwciB3aXRoIG5vIGNvbnRleHQuCiAgICAgICB1bnNp Z25lZCBuYXJncyA9IGdpbXBsZV9waGlfbnVtX2FyZ3MgKHBoaSk7CkBAIC0yNjQsNyArMjM2LDcg QEAgcGF0aF9yYW5nZV9xdWVyeTo6c3NhX3JhbmdlX2luX3BoaSAodnJhbmdlICZyLCBncGhpICpw aGkpCiAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5hcmdzOyArK2kpCiAJewogCSAgdHJl ZSBhcmcgPSBnaW1wbGVfcGhpX2FyZ19kZWYgKHBoaSwgaSk7Ci0JICBpZiAocmFuZ2Vfb2ZfZXhw ciAoYXJnX3JhbmdlLCBhcmcsIC8qc3RtdD0qL05VTEwpKQorCSAgaWYgKG1fcmFuZ2VyLnJhbmdl X29mX2V4cHIgKGFyZ19yYW5nZSwgYXJnLCAvKnN0bXQ9Ki9OVUxMKSkKIAkgICAgci51bmlvbl8g KGFyZ19yYW5nZSk7CiAJICBlbHNlCiAJICAgIHsKQEAgLTM0OCw4ICszMjAsNiBAQCBwYXRoX3Jh bmdlX3F1ZXJ5OjpyYW5nZV9kZWZpbmVkX2luX2Jsb2NrICh2cmFuZ2UgJnIsIHRyZWUgbmFtZSwg YmFzaWNfYmxvY2sgYmIpCiB2b2lkCiBwYXRoX3JhbmdlX3F1ZXJ5Ojpjb21wdXRlX3Jhbmdlc19p bl9waGlzIChiYXNpY19ibG9jayBiYikKIHsKLSAgYXV0b19iaXRtYXAgcGhpX3NldDsKLQogICAv LyBQSElzIG11c3QgYmUgcmVzb2x2ZWQgc2ltdWx0YW5lb3VzbHkgb24gZW50cnkgdG8gdGhlIGJs b2NrCiAgIC8vIGJlY2F1c2UgYW55IGRlcGVuZGVuY2llcyBtdXN0IGJlIHNhdGlzdGlmZWQgd2l0 aCB2YWx1ZXMgb24gZW50cnkuCiAgIC8vIFRodXMsIHdlIGNhbGN1bGF0ZSBhbGwgUEhJcyBmaXJz dCwgYW5kIHRoZW4gdXBkYXRlIHRoZSBjYWNoZSBhdApAQCAtMzY1LDE2ICszMzUsOCBAQCBwYXRo X3JhbmdlX3F1ZXJ5Ojpjb21wdXRlX3Jhbmdlc19pbl9waGlzIChiYXNpY19ibG9jayBiYikKIAog ICAgICAgVmFsdWVfUmFuZ2UgciAoVFJFRV9UWVBFIChuYW1lKSk7CiAgICAgICBpZiAocmFuZ2Vf ZGVmaW5lZF9pbl9ibG9jayAociwgbmFtZSwgYmIpKQotCXsKLQkgIHVuc2lnbmVkIHYgPSBTU0Ff TkFNRV9WRVJTSU9OIChuYW1lKTsKLQkgIHNldF9jYWNoZSAociwgbmFtZSk7Ci0JICBiaXRtYXBf c2V0X2JpdCAocGhpX3NldCwgdik7Ci0JICAvLyBQcmV0ZW5kIHdlIGRvbid0IGhhdmUgYSBjYWNo ZSBlbnRyeSBmb3IgdGhpcyBuYW1lIHVudGlsCi0JICAvLyB3ZSdyZSBkb25lIHdpdGggYWxsIFBI SXMuCi0JICBiaXRtYXBfY2xlYXJfYml0IChtX2hhc19jYWNoZV9lbnRyeSwgdik7Ci0JfQorCW1f Y2FjaGUuc2V0X2dsb2JhbF9yYW5nZSAobmFtZSwgcik7CiAgICAgfQotICBiaXRtYXBfaW9yX2lu dG8gKG1faGFzX2NhY2hlX2VudHJ5LCBwaGlfc2V0KTsKIH0KIAogLy8gUmV0dXJuIFRSVUUgaWYg cmVsYXRpb25zIG1heSBiZSBpbnZhbGlkYXRlZCBhZnRlciBjcm9zc2luZyBlZGdlIEUuCkBAIC00 MDgsNyArMzcwLDcgQEAgcGF0aF9yYW5nZV9xdWVyeTo6Y29tcHV0ZV9yYW5nZXNfaW5fYmxvY2sg KGJhc2ljX2Jsb2NrIGJiKQogICAgIHsKICAgICAgIHRyZWUgbmFtZSA9IHNzYV9uYW1lIChpKTsK ICAgICAgIGlmIChzc2FfZGVmaW5lZF9pbl9iYiAobmFtZSwgYmIpKQotCWNsZWFyX2NhY2hlIChu YW1lKTsKKwltX2NhY2hlLmNsZWFyX2dsb2JhbF9yYW5nZSAobmFtZSk7CiAgICAgfQogCiAgIC8v IFNvbHZlIGRlcGVuZGVuY2llcyBkZWZpbmVkIGluIHRoaXMgYmxvY2ssIHN0YXJ0aW5nIHdpdGgg dGhlIFBISXMuLi4KQEAgLTQyMSw3ICszODMsNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5Ojpjb21wdXRl X3Jhbmdlc19pbl9ibG9jayAoYmFzaWNfYmxvY2sgYmIpCiAKICAgICAgIGlmIChnaW1wbGVfY29k ZSAoU1NBX05BTUVfREVGX1NUTVQgKG5hbWUpKSAhPSBHSU1QTEVfUEhJCiAJICAmJiByYW5nZV9k ZWZpbmVkX2luX2Jsb2NrIChyLCBuYW1lLCBiYikpCi0Jc2V0X2NhY2hlIChyLCBuYW1lKTsKKwlt X2NhY2hlLnNldF9nbG9iYWxfcmFuZ2UgKG5hbWUsIHIpOwogICAgIH0KIAogICBpZiAoYXRfZXhp dCAoKSkKQEAgLTQ1Nyw3ICs0MTksNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5Ojpjb21wdXRlX3Jhbmdl c19pbl9ibG9jayAoYmFzaWNfYmxvY2sgYmIpCiAJICBpZiAoZ2V0X2NhY2hlIChjYWNoZWRfcmFu Z2UsIG5hbWUpKQogCSAgICByLmludGVyc2VjdCAoY2FjaGVkX3JhbmdlKTsKIAotCSAgc2V0X2Nh Y2hlIChyLCBuYW1lKTsKKwkgIG1fY2FjaGUuc2V0X2dsb2JhbF9yYW5nZSAobmFtZSwgcik7CiAJ ICBpZiAoREVCVUdfU09MVkVSKQogCSAgICB7CiAJICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAi b3V0Z29pbmdfZWRnZV9yYW5nZV9wIGZvciAiKTsKQEAgLTUwMCw3ICs0NjIsNyBAQCBwYXRoX3Jh bmdlX3F1ZXJ5OjphZGp1c3RfZm9yX25vbl9udWxsX3VzZXMgKGJhc2ljX2Jsb2NrIGJiKQogCXIu c2V0X3ZhcnlpbmcgKFRSRUVfVFlQRSAobmFtZSkpOwogCiAgICAgICBpZiAobV9yYW5nZXIubV9j YWNoZS5tX2V4aXQubWF5YmVfYWRqdXN0X3JhbmdlIChyLCBuYW1lLCBiYikpCi0Jc2V0X2NhY2hl IChyLCBuYW1lKTsKKwltX2NhY2hlLnNldF9nbG9iYWxfcmFuZ2UgKG5hbWUsIHIpOwogICAgIH0K IH0KIApkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS1wYXRoLmggYi9nY2MvZ2ltcGxlLXJh bmdlLXBhdGguaAppbmRleCBlOGIwNmI2MGU2Ni4uMzQ4NDFlNzhjM2QgMTAwNjQ0Ci0tLSBhL2dj Yy9naW1wbGUtcmFuZ2UtcGF0aC5oCisrKyBiL2djYy9naW1wbGUtcmFuZ2UtcGF0aC5oCkBAIC01 NCw5ICs1NCw3IEBAIHByaXZhdGU6CiAgIHBhdGhfb3JhY2xlICpnZXRfcGF0aF9vcmFjbGUgKCkg eyByZXR1cm4gKHBhdGhfb3JhY2xlICopbV9vcmFjbGU7IH0KIAogICAvLyBDYWNoZSBtYW5pcHVs YXRpb24uCi0gIHZvaWQgc2V0X2NhY2hlIChjb25zdCB2cmFuZ2UgJnIsIHRyZWUgbmFtZSk7CiAg IGJvb2wgZ2V0X2NhY2hlICh2cmFuZ2UgJnIsIHRyZWUgbmFtZSk7Ci0gIHZvaWQgY2xlYXJfY2Fj aGUgKHRyZWUgbmFtZSk7CiAKICAgLy8gTWV0aG9kcyB0byBjb21wdXRlIHJhbmdlcyBmb3IgdGhl IGdpdmVuIHBhdGguCiAgIGJvb2wgcmFuZ2VfZGVmaW5lZF9pbl9ibG9jayAodnJhbmdlICYsIHRy ZWUgbmFtZSwgYmFzaWNfYmxvY2sgYmIpOwpAQCAtODMsMTAgKzgxLDcgQEAgcHJpdmF0ZToKICAg dm9pZCBtb3ZlX25leHQgKCkJICB7IC0tbV9wb3M7IH0KIAogICAvLyBSYW5nZSBjYWNoZSBmb3Ig U1NBIG5hbWVzLgotICBzc2FfZ2xvYmFsX2NhY2hlICptX2NhY2hlOwotCi0gIC8vIFNldCBmb3Ig ZWFjaCBTU0EgdGhhdCBoYXMgYW4gYWN0aXZlIGVudHJ5IGluIHRoZSBjYWNoZS4KLSAgYml0bWFw IG1faGFzX2NhY2hlX2VudHJ5OworICBzc2FfbGF6eV9jYWNoZSBtX2NhY2hlOwogCiAgIC8vIFBh dGggYmVpbmcgYW5hbHl6ZWQuCiAgIGF1dG9fdmVjPGJhc2ljX2Jsb2NrPiBtX3BhdGg7CmRpZmYg LS1naXQgYS9nY2MvZ2ltcGxlLXJhbmdlLmggYi9nY2MvZ2ltcGxlLXJhbmdlLmgKaW5kZXggNGJm OWM0ODI5MjEuLmVhY2IzMmQ4YmEzIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXJhbmdlLmgKKysr IGIvZ2NjL2dpbXBsZS1yYW5nZS5oCkBAIC05NSw3ICs5NSw3IEBAIHByb3RlY3RlZDoKICAgdm9p ZCBjYWxjdWxhdGVfcGhpIChncGhpICpwaGksIHZyYW5nZSAmbGhzX3JhbmdlLCBmdXJfc291cmNl ICZzcmMpOwogICB2b2lkIGNoZWNrX3Rha2VuX2VkZ2UgKGVkZ2UgZSwgZnVyX3NvdXJjZSAmc3Jj KTsKIAotICBzc2FfZ2xvYmFsX2NhY2hlIGdsb2JhbDsKKyAgc3NhX2xhenlfY2FjaGUgZ2xvYmFs OwogICBnb3JpX2NvbXB1dGUgbV9nb3JpOwogfTsKIAotLSAKMi4zOS4wCgo= --------------gXsXe2HD2uBg4DJeHopskQX4--