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 81F833852767 for ; Wed, 26 Apr 2023 19:27:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 81F833852767 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=1682537231; 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=zlbuBnGGYP+QNOYuhHihQ7BvSjBJmB+PIBImfkbuuyY=; b=RhR69R+6n/pqBIZXeDkm328ezpw5enfwF0t7qRcmSl/YhVFRseiRDbnd7mXs5/vZtoW+0H tpWPimustAPWvlk2W1gBL+6G0ASYS3YEqv2xa4VQ12CW4j2icDodHkDA06uoozBa+ooD/T 03XGMBb4PEwxOQQlKjyrpgRhnMOaXOI= Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-488-GgqR6Px8NNSaqzbRqBIVbw-1; Wed, 26 Apr 2023 15:27:09 -0400 X-MC-Unique: GgqR6Px8NNSaqzbRqBIVbw-1 Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-3ef5c322d56so42506281cf.1 for ; Wed, 26 Apr 2023 12:27:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682537229; x=1685129229; 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=4N/V6+hM938929TH+0tfukdngZr/orH9RkFqLGc1LP4=; b=MFbo9v1mxpNn2wSN3mK1WdvrzrS2cPJ3x4W7zOmaBVFImRQOqgZMM9htVbwek3Ho7E JozHR37VSP7MNC0M+/y+XklvQNu4VbqDbSrYeVx+dzJXWXTJcSiNstOPty5jYjftI/Xp fKw/bNqTRa/wE6k0qEr43Jdip25C+uLAYx5Bn7jMUpZXOf4bMDVZU3L+IpQwUFWsIuin owZtdJyhDcbbSfvsL4SLYGet9sjThXlhF/Jd93rTe3FdOIRgAkjjK5Azz+armGRMhadk WlbueXb5EGtB1WXoHhTiKPxEv65EP72Yl09d2PI23ul7KbrHcEf38FAaCSfSiCOJ2S/U FxCQ== X-Gm-Message-State: AAQBX9db8juEwxQDYxdQefdvnz+QQL1hjaIDgIj5j3rH0zOXH7KQ1mss QTBPG1MZQQwl9wnLa8MpwgkB5UPWq3XUnla0MN19423erkQnuVcb6mLbp0vaZSfabqi4fIJvuPp AzRKuLFj3mrI3w822Fu9a0pVa3TcEG/NrgCqjnkkVGKTP71mcFqL6l9fUBmzwCZ+98D1aPOhg/o dz3Q== X-Received: by 2002:a05:622a:48a:b0:3ef:3b04:b8d8 with SMTP id p10-20020a05622a048a00b003ef3b04b8d8mr34982231qtx.0.1682537228842; Wed, 26 Apr 2023 12:27:08 -0700 (PDT) X-Google-Smtp-Source: AKy350aNtYs90ke9eXtmMuEkox4FruXUPcTX2lWirFxFBYsO8/I17eIP6ZKPiAcuXqJZcdGSh9HiAg== X-Received: by 2002:a05:622a:48a:b0:3ef:3b04:b8d8 with SMTP id p10-20020a05622a048a00b003ef3b04b8d8mr34982197qtx.0.1682537228522; Wed, 26 Apr 2023 12:27:08 -0700 (PDT) Received: from ?IPV6:2607:fea8:51df:4200::1dcd? ([2607:fea8:51df:4200::1dcd]) by smtp.gmail.com with ESMTPSA id az8-20020a05620a170800b0074e4c3719e9sm3483789qkb.69.2023.04.26.12.27.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 Apr 2023 12:27:08 -0700 (PDT) Message-ID: <8aab3ad2-f9cc-1211-a22f-491304685d8a@redhat.com> Date: Wed, 26 Apr 2023 15:27:06 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [COMMITTED 5/5] PR tree-optimization/108697 - Create a lazy ssa_cache. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------yKp3aWIAnGdALGWrNczNigM0" Content-Language: en-US X-Spam-Status: No, score=-11.8 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,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 List-Id: This is a multi-part message in MIME format. --------------yKp3aWIAnGdALGWrNczNigM0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sparsely used ssa caches can benefit from using a bitmap to determine if a name already has an entry.  The path_query class was already managing something like this internally, but there is benefit to making it generally available. ssa_lazy_cache inherits from ssa_cache and adds management of the bitmap.   The self-managed version in path_query has been removed, cleaned up, and replaced with this lazy version.  It is also now used in "assume_query" processing. All 5 patches combined produce about  - a 0.4% speedup in total compilation time,  - about a 1% speedup in VRP  - and threading picks up a more impressive 13% improvement. This patch has the previous one as a prerequisite to rename ssa_global_cache to ssa_cache. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew --------------yKp3aWIAnGdALGWrNczNigM0 Content-Type: text/x-patch; charset=UTF-8; name="0005-Create-a-lazy-ssa_cache.patch" Content-Disposition: attachment; filename="0005-Create-a-lazy-ssa_cache.patch" Content-Transfer-Encoding: base64 RnJvbSBiM2M4MWE0YTZiN2ZmNWFkY2U2YjU4OTE3MjliNzlhMGQ2ZTRlNTRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogVHVlLCAyOCBNYXIgMjAyMyAxMTozNToyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggNS81 XSBDcmVhdGUgYSBsYXp5IHNzYV9jYWNoZS4KClNwYXJzZWx5IHVzZWQgc3NhIGNhY2hlcyBjYW4g YmVuZWZpdCBmcm9tIHVzaW5nIGEgYml0bWFwIHRvCmRldGVybWluZSBpZiBhIG5hbWUgYWxyZWFk eSBoYXMgYW4gZW50cnkuICBVdGlsaXplIGl0IGluIHRoZSBwYXRoIHF1ZXJ5CmFuZCByZW1vdmUg aXRzIHByaXZhdGUgYml0bWFwIGZvciB0cmFja2luZyB0aGUgc2FtZSBpbmZvLgpBbHNvIHVzZSBp dCBpbiB0aGUgImFzc3VtZSIgcXVlcnkgY2xhc3MuCgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTA4 Njk3CgkqIGdpbXBsZS1yYW5nZS1jYWNoZS5jYyAoc3NhX2dsb2JhbF9jYWNoZTo6Y2xlYXJfcmFu Z2UpOiBEbwoJbm90IGNsZWFyIHRoZSB2ZWN0b3Igb24gYW4gb3V0IG9mIHJhbmdlIHF1ZXJ5LgoJ KHNzYV9jYWNoZTo6ZHVtcCk6IFVzZSBkdW1wX3JhbmdlX3F1ZXJ5IGluc3RlYWQgb2YgZ2V0X3Jh bmdlLgoJKHNzYV9jYWNoZTo6ZHVtcF9yYW5nZV9xdWVyeSk6IE5ldy4KCShzc2FfbGF6eV9jYWNo ZTo6ZHVtcF9yYW5nZV9xdWVyeSk6IE5ldy4KCShzc2FfbGF6eV9jYWNoZTo6c2V0X3JhbmdlKTog TmV3LgoJKiBnaW1wbGUtcmFuZ2UtY2FjaGUuaCAoc3NhX2NhY2hlOjpkdW1wX3JhbmdlX3F1ZXJ5 KTogTmV3LgoJKGNsYXNzIHNzYV9sYXp5X2NhY2hlKTogTmV3LgoJKHNzYV9sYXp5X2NhY2hlOjpz c2FfbGF6eV9jYWNoZSk6IE5ldy4KCShzc2FfbGF6eV9jYWNoZTo6fnNzYV9sYXp5X2NhY2hlKTog TmV3LgoJKHNzYV9sYXp5X2NhY2hlOjpnZXRfcmFuZ2UpOiBOZXcuCgkoc3NhX2xhenlfY2FjaGU6 OmNsZWFyX3JhbmdlKTogTmV3LgoJKHNzYV9sYXp5X2NhY2hlOjpjbGVhcik6IE5ldy4KCShzc2Ff bGF6eV9jYWNoZTo6ZHVtcCk6IE5ldy4KCSogZ2ltcGxlLXJhbmdlLXBhdGguY2MgKHBhdGhfcmFu Z2VfcXVlcnk6OnBhdGhfcmFuZ2VfcXVlcnkpOiBEbwoJbm90IGFsbG9jYXRlIGEgc3NhX2NhY2hl IG9iamVjdCBub3IgaGFzX2NhY2hlIGJpdG1hcC4KCShwYXRoX3JhbmdlX3F1ZXJ5Ojp+cGF0aF9y YW5nZV9xdWVyeSk6IERvIG5vdCBmcmVlIG9iamVjdHMuCgkocGF0aF9yYW5nZV9xdWVyeTo6Y2xl YXJfY2FjaGUpOiBSZW1vdmUuCgkocGF0aF9yYW5nZV9xdWVyeTo6Z2V0X2NhY2hlKTogQWRqdXN0 LgoJKHBhdGhfcmFuZ2VfcXVlcnk6OnNldF9jYWNoZSk6IFJlbW92ZS4KCShwYXRoX3JhbmdlX3F1 ZXJ5OjpkdW1wKTogRG9uJ3QgY2FsbCB0aHJvdWdoIGEgcG9pbnRlci4KCShwYXRoX3JhbmdlX3F1 ZXJ5OjppbnRlcm5hbF9yYW5nZV9vZl9leHByKTogU2V0IGNhY2hlIGRpcmVjdGx5LgoJKHBhdGhf cmFuZ2VfcXVlcnk6OnJlc2V0X3BhdGgpOiBDbGVhciBjYWNoZSBkaXJlY3RseS4KCShwYXRoX3Jh bmdlX3F1ZXJ5Ojpzc2FfcmFuZ2VfaW5fcGhpKTogRm9sZCB3aXRoIGdsb2JhbHMgb25seS4KCShw YXRoX3JhbmdlX3F1ZXJ5Ojpjb21wdXRlX3Jhbmdlc19pbl9waGlzKTogU2ltcGx5IHNldCByYW5n ZS4KCShwYXRoX3JhbmdlX3F1ZXJ5Ojpjb21wdXRlX3Jhbmdlc19pbl9ibG9jayk6IENhbGwgY2Fj aGUgZGlyZWN0bHkuCgkqIGdpbXBsZS1yYW5nZS1wYXRoLmggKGNsYXNzIHBhdGhfcmFuZ2VfcXVl cnkpOiBSZXBsYWNlIGJpdG1hcAoJYW5kIGNhY2hlIHBvaW50ZXIgd2l0aCBsYXp5IGNhY2hlIG9i amVjdC4KCSogZ2ltcGxlLXJhbmdlLmggKGNsYXNzIGFzc3VtZV9xdWVyeSk6IFVzZSBzc2FfbGF6 eV9jYWNoZS4KLS0tCiBnY2MvZ2ltcGxlLXJhbmdlLWNhY2hlLmNjIHwgNDUgKysrKysrKysrKysr KysrKysrKysrKysrKy0tCiBnY2MvZ2ltcGxlLXJhbmdlLWNhY2hlLmggIHwgMzUgKysrKysrKysr KysrKysrKysrKystCiBnY2MvZ2ltcGxlLXJhbmdlLXBhdGguY2MgIHwgNjUgKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBnY2MvZ2ltcGxlLXJhbmdlLXBhdGguaCAgIHwg IDcgKy0tLS0KIGdjYy9naW1wbGUtcmFuZ2UuaCAgICAgICAgfCAgMiArLQogNSBmaWxlcyBjaGFu Z2VkLCA5MiBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2Mv Z2ltcGxlLXJhbmdlLWNhY2hlLmNjIGIvZ2NjL2dpbXBsZS1yYW5nZS1jYWNoZS5jYwppbmRleCA2 ZGU5NmY2YjhhOS4uNTUxMGVmYmExY2EgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtcmFuZ2UtY2Fj aGUuY2MKKysrIGIvZ2NjL2dpbXBsZS1yYW5nZS1jYWNoZS5jYwpAQCAtNTkyLDE0ICs1OTIsMTQg QEAgc3NhX2NhY2hlOjpzZXRfcmFuZ2UgKHRyZWUgbmFtZSwgY29uc3QgdnJhbmdlICZyKQogICBy ZXR1cm4gbSAhPSBOVUxMOwogfQogCi0vLyBTZXQgdGhlIHJhbmdlIGZvciBOQU1FIHRvIFIgaW4g dGhlIGdsb2JhbCBjYWNoZS4KKy8vIFNldCB0aGUgcmFuZ2UgZm9yIE5BTUUgdG8gUiBpbiB0aGUg c3NhIGNhY2hlLgogCiB2b2lkCiBzc2FfY2FjaGU6OmNsZWFyX3JhbmdlICh0cmVlIG5hbWUpCiB7 CiAgIHVuc2lnbmVkIHYgPSBTU0FfTkFNRV9WRVJTSU9OIChuYW1lKTsKICAgaWYgKHYgPj0gbV90 YWIubGVuZ3RoICgpKQotICAgIG1fdGFiLnNhZmVfZ3Jvd19jbGVhcmVkIChudW1fc3NhX25hbWVz ICsgMSk7CisgICAgcmV0dXJuOwogICBtX3RhYlt2XSA9IE5VTEw7CiB9CiAKQEAgLTYyNCw3ICs2 MjQsMTAgQEAgc3NhX2NhY2hlOjpkdW1wIChGSUxFICpmKQogICAgICAgaWYgKCFnaW1wbGVfcmFu Z2Vfc3NhX3AgKHNzYV9uYW1lICh4KSkpCiAJY29udGludWU7CiAgICAgICBWYWx1ZV9SYW5nZSBy IChUUkVFX1RZUEUgKHNzYV9uYW1lICh4KSkpOwotICAgICAgaWYgKGdldF9yYW5nZSAociwgc3Nh X25hbWUgKHgpKSAmJiAhci52YXJ5aW5nX3AgKCkpCisgICAgICAvLyBJbnZva2UgZHVtcF9yYW5n ZV9xdWVyeSB3aGljaCBpcyBhIHByaXZhdGUgdmlydHVhbCB2ZXJzaW9uIG9mCisgICAgICAvLyBn ZXRfcmFuZ2UuICAgVGhpcyBhdm9pZHMgcGVyZm9ybWFuY2UgaW1wYWN0cyBvbiBnZW5lcmFsIHF1 ZXJpZXMsCisgICAgICAvLyBidXQgYWxsb3dzIHNoYXJpbmcgb2YgdGhlIGR1bXAgcm91dGluZS4K KyAgICAgIGlmIChkdW1wX3JhbmdlX3F1ZXJ5IChyLCBzc2FfbmFtZSAoeCkpICYmICFyLnZhcnlp bmdfcCAoKSkKIAl7CiAJICBpZiAocHJpbnRfaGVhZGVyKQogCSAgICB7CkBAIC02NDYsNiArNjQ5 LDQyIEBAIHNzYV9jYWNoZTo6ZHVtcCAoRklMRSAqZikKICAgICBmcHV0YyAoJ1xuJywgZik7CiB9 CiAKKy8vIFZpcnR1YWwgcHJpdmF0ZSBnZXRfcmFuZ2UgcXVlcnkgZm9yIGR1bXBpbmcuCisKK2Jv b2wKK3NzYV9jYWNoZTo6ZHVtcF9yYW5nZV9xdWVyeSAodnJhbmdlICZyLCB0cmVlIG5hbWUpIGNv bnN0Cit7CisgIHJldHVybiBnZXRfcmFuZ2UgKHIsIG5hbWUpOworfQorCisvLyBWaXJ0dWFsIHBy aXZhdGUgZ2V0X3JhbmdlIHF1ZXJ5IGZvciBkdW1waW5nLgorCitib29sCitzc2FfbGF6eV9jYWNo ZTo6ZHVtcF9yYW5nZV9xdWVyeSAodnJhbmdlICZyLCB0cmVlIG5hbWUpIGNvbnN0Cit7CisgIHJl dHVybiBnZXRfcmFuZ2UgKHIsIG5hbWUpOworfQorCisKKy8vIFNldCByYW5nZSBvZiBOQU1FIHRv IFIgaW4gYSBsYXp5IGNhY2hlLiAgUmV0dXJuIEZBTFNFIGlmIGl0IGRpZCBub3QgYWxyZWFkeQor Ly8gaGF2ZSBhIHJhbmdlLgorCitib29sCitzc2FfbGF6eV9jYWNoZTo6c2V0X3JhbmdlICh0cmVl IG5hbWUsIGNvbnN0IHZyYW5nZSAmcikKK3sKKyAgdW5zaWduZWQgdiA9IFNTQV9OQU1FX1ZFUlNJ T04gKG5hbWUpOworICBpZiAoIWJpdG1hcF9zZXRfYml0IChhY3RpdmVfcCwgdikpCisgICAgewor ICAgICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhbiBlbnRyeSwgc2ltcGx5IHNldCBpdC4KKyAgICAg IGdjY19jaGVja2luZ19hc3NlcnQgKHYgPCBtX3RhYi5sZW5ndGggKCkpOworICAgICAgcmV0dXJu IHNzYV9jYWNoZTo6c2V0X3JhbmdlIChuYW1lLCByKTsKKyAgICB9CisgIGlmICh2ID49IG1fdGFi Lmxlbmd0aCAoKSkKKyAgICBtX3RhYi5zYWZlX2dyb3cgKG51bV9zc2FfbmFtZXMgKyAxKTsKKyAg bV90YWJbdl0gPSBtX3JhbmdlX2FsbG9jYXRvci0+Y2xvbmUgKHIpOworICByZXR1cm4gZmFsc2U7 Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIApkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1y YW5nZS1jYWNoZS5oIGIvZ2NjL2dpbXBsZS1yYW5nZS1jYWNoZS5oCmluZGV4IDJkNDFmMGM1YzY3 Li45MDMyZGY5ZTNlMyAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1yYW5nZS1jYWNoZS5oCisrKyBi L2djYy9naW1wbGUtcmFuZ2UtY2FjaGUuaApAQCAtNjMsMTEgKzYzLDQ0IEBAIHB1YmxpYzoKICAg dm9pZCBjbGVhcl9yYW5nZSAodHJlZSBuYW1lKTsKICAgdm9pZCBjbGVhciAoKTsKICAgdm9pZCBk dW1wIChGSUxFICpmID0gc3RkZXJyKTsKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgIHZpcnR1YWwg Ym9vbCBkdW1wX3JhbmdlX3F1ZXJ5ICh2cmFuZ2UgJnIsIHRyZWUgbmFtZSkgY29uc3Q7CiAgIHZl Yzx2cmFuZ2UgKj4gbV90YWI7CiAgIHZyYW5nZV9hbGxvY2F0b3IgKm1fcmFuZ2VfYWxsb2NhdG9y OwogfTsKIAorLy8gVGhpcyBpcyB0aGUgc2FtZSBhcyBnbG9iYWwgY2FjaGUsIGV4Y2VwdCBpdCBt YWludGFpbnMgYW4gYWN0aXZlIGJpdG1hcAorLy8gcmF0aGVyIHRoYW4gZGVwZW5kaW5nIG9uIGEg emVybydkIG91dCB2ZWN0b3Igb2YgcG9pbnRlcnMuICBUaGlzIGlzIGJldHRlcgorLy8gZm9yIHNw YXJzZWx5L2xpZ2h0bHkgdXNlZCBjYWNoZXMuCisvLyBJdCBjb3VsZCBiZSBtYWRlIGEgZnVsbHkg ZGVyaXZlZCBjbGFzcywgYnV0IGF0IHRoaXMgcG9pbnQgdGhlcmUgZG9lc250IHNlZW0KKy8vIHRv IGJlIGEgbmVlZCB0byB0YWtlIHRoZSBwZXJmb3JtYW5jZSBoaXQgZm9yIGl0LgorCitjbGFzcyBz c2FfbGF6eV9jYWNoZSA6IHByb3RlY3RlZCBzc2FfY2FjaGUKK3sKK3B1YmxpYzoKKyAgaW5saW5l IHNzYV9sYXp5X2NhY2hlICgpIHsgYWN0aXZlX3AgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOyB9Cisg IGlubGluZSB+c3NhX2xhenlfY2FjaGUgKCkgeyBCSVRNQVBfRlJFRSAoYWN0aXZlX3ApOyB9Cisg IGJvb2wgc2V0X3JhbmdlICh0cmVlIG5hbWUsIGNvbnN0IHZyYW5nZSAmcik7CisgIGlubGluZSBi b29sIGdldF9yYW5nZSAodnJhbmdlICZyLCB0cmVlIG5hbWUpIGNvbnN0OworICBpbmxpbmUgdm9p ZCBjbGVhcl9yYW5nZSAodHJlZSBuYW1lKQorICAgIHsgYml0bWFwX2NsZWFyX2JpdCAoYWN0aXZl X3AsIFNTQV9OQU1FX1ZFUlNJT04gKG5hbWUpKTsgfSA7CisgIGlubGluZSB2b2lkIGNsZWFyICgp IHsgYml0bWFwX2NsZWFyIChhY3RpdmVfcCk7IH0KKyAgaW5saW5lIHZvaWQgZHVtcCAoRklMRSAq ZiA9IHN0ZGVycikgeyBzc2FfY2FjaGU6OmR1bXAgKGYpOyB9Citwcm90ZWN0ZWQ6CisgIHZpcnR1 YWwgYm9vbCBkdW1wX3JhbmdlX3F1ZXJ5ICh2cmFuZ2UgJnIsIHRyZWUgbmFtZSkgY29uc3Q7Cisg IGJpdG1hcCBhY3RpdmVfcDsKK307CisKKy8vIFJldHVybiBUUlVFIGlmIE5BTUUgaGFzIGEgcmFu Z2UsIGFuZCByZXR1cm4gaXQgaW4gUi4KKworYm9vbAorc3NhX2xhenlfY2FjaGU6OmdldF9yYW5n ZSAodnJhbmdlICZyLCB0cmVlIG5hbWUpIGNvbnN0Cit7CisgIGlmICghYml0bWFwX2JpdF9wIChh Y3RpdmVfcCwgU1NBX05BTUVfVkVSU0lPTiAobmFtZSkpKQorICAgIHJldHVybiBmYWxzZTsKKyAg cmV0dXJuIHNzYV9jYWNoZTo6Z2V0X3JhbmdlIChyLCBuYW1lKTsKK30KKwogLy8gVGhpcyBjbGFz cyBwcm92aWRlcyBhbGwgdGhlIGNhY2hlcyBhIGdsb2JhbCByYW5nZXIgbWF5IG5lZWQsIGFuZCBt YWtlcyAKIC8vIHRoZW0gYXZhaWxhYmxlIGZvciBnb3JpLWNvbXB1dGVzIHRvIHF1ZXJ5IHNvIG91 dGdvaW5nIGVkZ2VzIGNhbiBiZQogLy8gcHJvcGVybHkgY2FsY3VsYXRlZC4KZGlmZiAtLWdpdCBh L2djYy9naW1wbGUtcmFuZ2UtcGF0aC5jYyBiL2djYy9naW1wbGUtcmFuZ2UtcGF0aC5jYwppbmRl eCAwNzg2OGRmNWU2Zi4uNzQzOGI4MzJiNWEgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtcmFuZ2Ut cGF0aC5jYworKysgYi9nY2MvZ2ltcGxlLXJhbmdlLXBhdGguY2MKQEAgLTQwLDggKzQwLDcgQEAg cGF0aF9yYW5nZV9xdWVyeTo6cGF0aF9yYW5nZV9xdWVyeSAoZ2ltcGxlX3JhbmdlciAmcmFuZ2Vy LAogCQkJCSAgICBjb25zdCB2ZWM8YmFzaWNfYmxvY2s+ICZwYXRoLAogCQkJCSAgICBjb25zdCBi aXRtYXBfaGVhZCAqZGVwZW5kZW5jaWVzLAogCQkJCSAgICBib29sIHJlc29sdmUpCi0gIDogbV9j YWNoZSAobmV3IHNzYV9jYWNoZSksCi0gICAgbV9oYXNfY2FjaGVfZW50cnkgKEJJVE1BUF9BTExP QyAoTlVMTCkpLAorICA6IG1fY2FjaGUgKCksCiAgICAgbV9yYW5nZXIgKHJhbmdlciksCiAgICAg bV9yZXNvbHZlIChyZXNvbHZlKQogewpAQCAtNTEsOCArNTAsNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5 OjpwYXRoX3JhbmdlX3F1ZXJ5IChnaW1wbGVfcmFuZ2VyICZyYW5nZXIsCiB9CiAKIHBhdGhfcmFu Z2VfcXVlcnk6OnBhdGhfcmFuZ2VfcXVlcnkgKGdpbXBsZV9yYW5nZXIgJnJhbmdlciwgYm9vbCBy ZXNvbHZlKQotICA6IG1fY2FjaGUgKG5ldyBzc2FfY2FjaGUpLAotICAgIG1faGFzX2NhY2hlX2Vu dHJ5IChCSVRNQVBfQUxMT0MgKE5VTEwpKSwKKyAgOiBtX2NhY2hlICgpLAogICAgIG1fcmFuZ2Vy IChyYW5nZXIpLAogICAgIG1fcmVzb2x2ZSAocmVzb2x2ZSkKIHsKQEAgLTYyLDggKzYwLDYgQEAg cGF0aF9yYW5nZV9xdWVyeTo6cGF0aF9yYW5nZV9xdWVyeSAoZ2ltcGxlX3JhbmdlciAmcmFuZ2Vy LCBib29sIHJlc29sdmUpCiBwYXRoX3JhbmdlX3F1ZXJ5Ojp+cGF0aF9yYW5nZV9xdWVyeSAoKQog ewogICBkZWxldGUgbV9vcmFjbGU7Ci0gIEJJVE1BUF9GUkVFIChtX2hhc19jYWNoZV9lbnRyeSk7 Ci0gIGRlbGV0ZSBtX2NhY2hlOwogfQogCiAvLyBSZXR1cm4gVFJVRSBpZiBOQU1FIGlzIGFuIGV4 aXQgZGVwZW5kZW5jeSBmb3IgdGhlIHBhdGguCkBAIC03NSwxNSArNzEsNiBAQCBwYXRoX3Jhbmdl X3F1ZXJ5OjpleGl0X2RlcGVuZGVuY3lfcCAodHJlZSBuYW1lKQogCSAgJiYgYml0bWFwX2JpdF9w IChtX2V4aXRfZGVwZW5kZW5jaWVzLCBTU0FfTkFNRV9WRVJTSU9OIChuYW1lKSkpOwogfQogCi0v LyBNYXJrIGNhY2hlIGVudHJ5IGZvciBOQU1FIGFzIHVudXNlZC4KLQotdm9pZAotcGF0aF9yYW5n ZV9xdWVyeTo6Y2xlYXJfY2FjaGUgKHRyZWUgbmFtZSkKLXsKLSAgdW5zaWduZWQgdiA9IFNTQV9O QU1FX1ZFUlNJT04gKG5hbWUpOwotICBiaXRtYXBfY2xlYXJfYml0IChtX2hhc19jYWNoZV9lbnRy eSwgdik7Ci19Ci0KIC8vIElmIE5BTUUgaGFzIGEgY2FjaGUgZW50cnksIHJldHVybiBpdCBpbiBS LCBhbmQgcmV0dXJuIFRSVUUuCiAKIGlubGluZSBib29sCkBAIC05MiwyMSArNzksNyBAQCBwYXRo X3JhbmdlX3F1ZXJ5OjpnZXRfY2FjaGUgKHZyYW5nZSAmciwgdHJlZSBuYW1lKQogICBpZiAoIWdp bXBsZV9yYW5nZV9zc2FfcCAobmFtZSkpCiAgICAgcmV0dXJuIGdldF9nbG9iYWxfcmFuZ2VfcXVl cnkgKCktPnJhbmdlX29mX2V4cHIgKHIsIG5hbWUpOwogCi0gIHVuc2lnbmVkIHYgPSBTU0FfTkFN RV9WRVJTSU9OIChuYW1lKTsKLSAgaWYgKGJpdG1hcF9iaXRfcCAobV9oYXNfY2FjaGVfZW50cnks IHYpKQotICAgIHJldHVybiBtX2NhY2hlLT5nZXRfcmFuZ2UgKHIsIG5hbWUpOwotCi0gIHJldHVy biBmYWxzZTsKLX0KLQotLy8gU2V0IHRoZSBjYWNoZSBlbnRyeSBmb3IgTkFNRSB0byBSLgotCi12 b2lkCi1wYXRoX3JhbmdlX3F1ZXJ5OjpzZXRfY2FjaGUgKGNvbnN0IHZyYW5nZSAmciwgdHJlZSBu YW1lKQotewotICB1bnNpZ25lZCB2ID0gU1NBX05BTUVfVkVSU0lPTiAobmFtZSk7Ci0gIGJpdG1h cF9zZXRfYml0IChtX2hhc19jYWNoZV9lbnRyeSwgdik7Ci0gIG1fY2FjaGUtPnNldF9yYW5nZSAo bmFtZSwgcik7CisgIHJldHVybiBtX2NhY2hlLmdldF9yYW5nZSAociwgbmFtZSk7CiB9CiAKIHZv aWQKQEAgLTEzMCw3ICsxMDMsNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5OjpkdW1wIChGSUxFICpkdW1w X2ZpbGUpCiAgICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJcbiIpOwogICAgIH0KIAotICBtX2Nh Y2hlLT5kdW1wIChkdW1wX2ZpbGUpOworICBtX2NhY2hlLmR1bXAgKGR1bXBfZmlsZSk7CiB9CiAK IHZvaWQKQEAgLTE3NCw3ICsxNDcsNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5OjppbnRlcm5hbF9yYW5n ZV9vZl9leHByICh2cmFuZ2UgJnIsIHRyZWUgbmFtZSwgZ2ltcGxlICpzdG10KQogICBpZiAobV9y ZXNvbHZlICYmIGRlZmluZWRfb3V0c2lkZV9wYXRoIChuYW1lKSkKICAgICB7CiAgICAgICByYW5n ZV9vbl9wYXRoX2VudHJ5IChyLCBuYW1lKTsKLSAgICAgIHNldF9jYWNoZSAociwgbmFtZSk7Cisg ICAgICBtX2NhY2hlLnNldF9yYW5nZSAobmFtZSwgcik7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAg ICB9CiAKQEAgLTE4OCw3ICsxNjEsNyBAQCBwYXRoX3JhbmdlX3F1ZXJ5OjppbnRlcm5hbF9yYW5n ZV9vZl9leHByICh2cmFuZ2UgJnIsIHRyZWUgbmFtZSwgZ2ltcGxlICpzdG10KQogCSAgci5pbnRl cnNlY3QgKGdsb2IpOwogCX0KIAotICAgICAgc2V0X2NhY2hlIChyLCBuYW1lKTsKKyAgICAgIG1f Y2FjaGUuc2V0X3JhbmdlIChuYW1lLCByKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA QCAtMjI1LDcgKzE5OCw3IEBAIHBhdGhfcmFuZ2VfcXVlcnk6OnJlc2V0X3BhdGggKGNvbnN0IHZl YzxiYXNpY19ibG9jaz4gJnBhdGgsCiAgIG1fcGF0aCA9IHBhdGguY29weSAoKTsKICAgbV9wb3Mg PSBtX3BhdGgubGVuZ3RoICgpIC0gMTsKICAgbV91bmRlZmluZWRfcGF0aCA9IGZhbHNlOwotICBi aXRtYXBfY2xlYXIgKG1faGFzX2NhY2hlX2VudHJ5KTsKKyAgbV9jYWNoZS5jbGVhciAoKTsKIAog ICBjb21wdXRlX3JhbmdlcyAoZGVwZW5kZW5jaWVzKTsKIH0KQEAgLTI1NSw3ICsyMjgsNyBAQCBw YXRoX3JhbmdlX3F1ZXJ5Ojpzc2FfcmFuZ2VfaW5fcGhpICh2cmFuZ2UgJnIsIGdwaGkgKnBoaSkK ICAgICAgIGlmIChtX3Jlc29sdmUgJiYgbV9yYW5nZXIucmFuZ2Vfb2ZfZXhwciAociwgbmFtZSwg cGhpKSkKIAlyZXR1cm47CiAKLSAgICAgIC8vIFRyeSB0byBmb2xkIHRoZSBwaGkgZXhjbHVzaXZl bHkgd2l0aCBnbG9iYWwgb3IgY2FjaGVkIHZhbHVlcy4KKyAgICAgIC8vIFRyeSB0byBmb2xkIHRo ZSBwaGkgZXhjbHVzaXZlbHkgd2l0aCBnbG9iYWwgdmFsdWVzLgogICAgICAgLy8gVGhpcyB3aWxs IGdldCB0aGluZ3MgbGlrZSBQSEkgPDUoOTkpLCA2KDg4KT4uICBXZSBkbyB0aGlzIGJ5CiAgICAg ICAvLyBjYWxsaW5nIHJhbmdlX29mX2V4cHIgd2l0aCBubyBjb250ZXh0LgogICAgICAgdW5zaWdu ZWQgbmFyZ3MgPSBnaW1wbGVfcGhpX251bV9hcmdzIChwaGkpOwpAQCAtMjY0LDcgKzIzNyw3IEBA IHBhdGhfcmFuZ2VfcXVlcnk6OnNzYV9yYW5nZV9pbl9waGkgKHZyYW5nZSAmciwgZ3BoaSAqcGhp KQogICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuYXJnczsgKytpKQogCXsKIAkgIHRyZWUg YXJnID0gZ2ltcGxlX3BoaV9hcmdfZGVmIChwaGksIGkpOwotCSAgaWYgKHJhbmdlX29mX2V4cHIg KGFyZ19yYW5nZSwgYXJnLCAvKnN0bXQ9Ki9OVUxMKSkKKwkgIGlmIChtX3Jhbmdlci5yYW5nZV9v Zl9leHByIChhcmdfcmFuZ2UsIGFyZywgLypzdG10PSovTlVMTCkpCiAJICAgIHIudW5pb25fIChh cmdfcmFuZ2UpOwogCSAgZWxzZQogCSAgICB7CkBAIC0zNDgsOCArMzIxLDYgQEAgcGF0aF9yYW5n ZV9xdWVyeTo6cmFuZ2VfZGVmaW5lZF9pbl9ibG9jayAodnJhbmdlICZyLCB0cmVlIG5hbWUsIGJh c2ljX2Jsb2NrIGJiKQogdm9pZAogcGF0aF9yYW5nZV9xdWVyeTo6Y29tcHV0ZV9yYW5nZXNfaW5f cGhpcyAoYmFzaWNfYmxvY2sgYmIpCiB7Ci0gIGF1dG9fYml0bWFwIHBoaV9zZXQ7Ci0KICAgLy8g UEhJcyBtdXN0IGJlIHJlc29sdmVkIHNpbXVsdGFuZW91c2x5IG9uIGVudHJ5IHRvIHRoZSBibG9j awogICAvLyBiZWNhdXNlIGFueSBkZXBlbmRlbmNpZXMgbXVzdCBiZSBzYXRpc2ZpZWQgd2l0aCB2 YWx1ZXMgb24gZW50cnkuCiAgIC8vIFRodXMsIHdlIGNhbGN1bGF0ZSBhbGwgUEhJcyBmaXJzdCwg YW5kIHRoZW4gdXBkYXRlIHRoZSBjYWNoZSBhdApAQCAtMzY1LDE2ICszMzYsOCBAQCBwYXRoX3Jh bmdlX3F1ZXJ5Ojpjb21wdXRlX3Jhbmdlc19pbl9waGlzIChiYXNpY19ibG9jayBiYikKIAogICAg ICAgVmFsdWVfUmFuZ2UgciAoVFJFRV9UWVBFIChuYW1lKSk7CiAgICAgICBpZiAocmFuZ2VfZGVm aW5lZF9pbl9ibG9jayAociwgbmFtZSwgYmIpKQotCXsKLQkgIHVuc2lnbmVkIHYgPSBTU0FfTkFN RV9WRVJTSU9OIChuYW1lKTsKLQkgIHNldF9jYWNoZSAociwgbmFtZSk7Ci0JICBiaXRtYXBfc2V0 X2JpdCAocGhpX3NldCwgdik7Ci0JICAvLyBQcmV0ZW5kIHdlIGRvbid0IGhhdmUgYSBjYWNoZSBl bnRyeSBmb3IgdGhpcyBuYW1lIHVudGlsCi0JICAvLyB3ZSdyZSBkb25lIHdpdGggYWxsIFBISXMu Ci0JICBiaXRtYXBfY2xlYXJfYml0IChtX2hhc19jYWNoZV9lbnRyeSwgdik7Ci0JfQorCW1fY2Fj aGUuc2V0X3JhbmdlIChuYW1lLCByKTsKICAgICB9Ci0gIGJpdG1hcF9pb3JfaW50byAobV9oYXNf Y2FjaGVfZW50cnksIHBoaV9zZXQpOwogfQogCiAvLyBSZXR1cm4gVFJVRSBpZiByZWxhdGlvbnMg bWF5IGJlIGludmFsaWRhdGVkIGFmdGVyIGNyb3NzaW5nIGVkZ2UgRS4KQEAgLTQwOCw3ICszNzEs NyBAQCBwYXRoX3JhbmdlX3F1ZXJ5Ojpjb21wdXRlX3Jhbmdlc19pbl9ibG9jayAoYmFzaWNfYmxv Y2sgYmIpCiAgICAgewogICAgICAgdHJlZSBuYW1lID0gc3NhX25hbWUgKGkpOwogICAgICAgaWYg KHNzYV9kZWZpbmVkX2luX2JiIChuYW1lLCBiYikpCi0JY2xlYXJfY2FjaGUgKG5hbWUpOworCW1f Y2FjaGUuY2xlYXJfcmFuZ2UgKG5hbWUpOwogICAgIH0KIAogICAvLyBTb2x2ZSBkZXBlbmRlbmNp ZXMgZGVmaW5lZCBpbiB0aGlzIGJsb2NrLCBzdGFydGluZyB3aXRoIHRoZSBQSElzLi4uCkBAIC00 MjEsNyArMzg0LDcgQEAgcGF0aF9yYW5nZV9xdWVyeTo6Y29tcHV0ZV9yYW5nZXNfaW5fYmxvY2sg KGJhc2ljX2Jsb2NrIGJiKQogCiAgICAgICBpZiAoZ2ltcGxlX2NvZGUgKFNTQV9OQU1FX0RFRl9T VE1UIChuYW1lKSkgIT0gR0lNUExFX1BISQogCSAgJiYgcmFuZ2VfZGVmaW5lZF9pbl9ibG9jayAo ciwgbmFtZSwgYmIpKQotCXNldF9jYWNoZSAociwgbmFtZSk7CisJbV9jYWNoZS5zZXRfcmFuZ2Ug KG5hbWUsIHIpOwogICAgIH0KIAogICBpZiAoYXRfZXhpdCAoKSkKQEAgLTQ1Nyw3ICs0MjAsNyBA QCBwYXRoX3JhbmdlX3F1ZXJ5Ojpjb21wdXRlX3Jhbmdlc19pbl9ibG9jayAoYmFzaWNfYmxvY2sg YmIpCiAJICBpZiAoZ2V0X2NhY2hlIChjYWNoZWRfcmFuZ2UsIG5hbWUpKQogCSAgICByLmludGVy c2VjdCAoY2FjaGVkX3JhbmdlKTsKIAotCSAgc2V0X2NhY2hlIChyLCBuYW1lKTsKKwkgIG1fY2Fj aGUuc2V0X3JhbmdlIChuYW1lLCByKTsKIAkgIGlmIChERUJVR19TT0xWRVIpCiAJICAgIHsKIAkg ICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJvdXRnb2luZ19lZGdlX3JhbmdlX3AgZm9yICIpOwpA QCAtNTAwLDcgKzQ2Myw3IEBAIHBhdGhfcmFuZ2VfcXVlcnk6OmFkanVzdF9mb3Jfbm9uX251bGxf dXNlcyAoYmFzaWNfYmxvY2sgYmIpCiAJci5zZXRfdmFyeWluZyAoVFJFRV9UWVBFIChuYW1lKSk7 CiAKICAgICAgIGlmIChtX3Jhbmdlci5tX2NhY2hlLm1fZXhpdC5tYXliZV9hZGp1c3RfcmFuZ2Ug KHIsIG5hbWUsIGJiKSkKLQlzZXRfY2FjaGUgKHIsIG5hbWUpOworCW1fY2FjaGUuc2V0X3Jhbmdl IChuYW1lLCByKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtcmFuZ2UtcGF0 aC5oIGIvZ2NjL2dpbXBsZS1yYW5nZS1wYXRoLmgKaW5kZXggMjllMzNjNmMzN2IuLjM0ODQxZTc4 YzNkIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXJhbmdlLXBhdGguaAorKysgYi9nY2MvZ2ltcGxl LXJhbmdlLXBhdGguaApAQCAtNTQsOSArNTQsNyBAQCBwcml2YXRlOgogICBwYXRoX29yYWNsZSAq Z2V0X3BhdGhfb3JhY2xlICgpIHsgcmV0dXJuIChwYXRoX29yYWNsZSAqKW1fb3JhY2xlOyB9CiAK ICAgLy8gQ2FjaGUgbWFuaXB1bGF0aW9uLgotICB2b2lkIHNldF9jYWNoZSAoY29uc3QgdnJhbmdl ICZyLCB0cmVlIG5hbWUpOwogICBib29sIGdldF9jYWNoZSAodnJhbmdlICZyLCB0cmVlIG5hbWUp OwotICB2b2lkIGNsZWFyX2NhY2hlICh0cmVlIG5hbWUpOwogCiAgIC8vIE1ldGhvZHMgdG8gY29t cHV0ZSByYW5nZXMgZm9yIHRoZSBnaXZlbiBwYXRoLgogICBib29sIHJhbmdlX2RlZmluZWRfaW5f YmxvY2sgKHZyYW5nZSAmLCB0cmVlIG5hbWUsIGJhc2ljX2Jsb2NrIGJiKTsKQEAgLTgzLDEwICs4 MSw3IEBAIHByaXZhdGU6CiAgIHZvaWQgbW92ZV9uZXh0ICgpCSAgeyAtLW1fcG9zOyB9CiAKICAg Ly8gUmFuZ2UgY2FjaGUgZm9yIFNTQSBuYW1lcy4KLSAgc3NhX2NhY2hlICptX2NhY2hlOwotCi0g IC8vIFNldCBmb3IgZWFjaCBTU0EgdGhhdCBoYXMgYW4gYWN0aXZlIGVudHJ5IGluIHRoZSBjYWNo ZS4KLSAgYml0bWFwIG1faGFzX2NhY2hlX2VudHJ5OworICBzc2FfbGF6eV9jYWNoZSBtX2NhY2hl OwogCiAgIC8vIFBhdGggYmVpbmcgYW5hbHl6ZWQuCiAgIGF1dG9fdmVjPGJhc2ljX2Jsb2NrPiBt X3BhdGg7CmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXJhbmdlLmggYi9nY2MvZ2ltcGxlLXJhbmdl LmgKaW5kZXggOTQ0ZTc2OTJhMGUuLmUzYWE5NDc1ZjVlIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxl LXJhbmdlLmgKKysrIGIvZ2NjL2dpbXBsZS1yYW5nZS5oCkBAIC05Niw3ICs5Niw3IEBAIHByb3Rl Y3RlZDoKICAgdm9pZCBjYWxjdWxhdGVfcGhpIChncGhpICpwaGksIHZyYW5nZSAmbGhzX3Jhbmdl LCBmdXJfc291cmNlICZzcmMpOwogICB2b2lkIGNoZWNrX3Rha2VuX2VkZ2UgKGVkZ2UgZSwgZnVy X3NvdXJjZSAmc3JjKTsKIAotICBzc2FfY2FjaGUgZ2xvYmFsOworICBzc2FfbGF6eV9jYWNoZSBn bG9iYWw7CiAgIGdvcmlfY29tcHV0ZSBtX2dvcmk7CiB9OwogCi0tIAoyLjM5LjIKCg== --------------yKp3aWIAnGdALGWrNczNigM0--