From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 117978 invoked by alias); 22 Jan 2016 20:21:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 117962 invoked by uid 89); 22 Jan 2016 20:21:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=cached, derive, bitmap_bit_p, bitmap_set_bit X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 22 Jan 2016 20:21:12 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 53BD78F013 for ; Fri, 22 Jan 2016 20:21:11 +0000 (UTC) Received: from slagheap.utah.redhat.com (ovpn-113-74.phx2.redhat.com [10.3.113.74]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u0MKLAra032559 for ; Fri, 22 Jan 2016 15:21:11 -0500 From: Jeff Law To: gcc-patches Subject: [PATCH][PR tree-optimization/69347] Speedup DOM slightly Message-ID: <56A28F36.9000807@redhat.com> Date: Fri, 22 Jan 2016 20:21:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080201030300070308000806" X-IsSubscribed: yes X-SW-Source: 2016-01/txt/msg01785.txt.bz2 This is a multi-part message in MIME format. --------------080201030300070308000806 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2206 So as noted in BZ69347 we have regressed a bit in the amount of time spent in DOM for included testcase. My previous patch helped a little, but there's still some low hanging fruit. One of the things that was added during this cycle was the ability to do a bit of secondary equivalence discovery. ie, we discover an equivalence due to an edge traversal -- we can, in limited circumstances, back propagate the known value backwards and discover additional equivalences. That code turns out to be surprisingly expensive. After a fair amount poking with perf & gprof a few things stick out. While dominance testing is relatively cheap, when done often enough it gets expensive. We can do a bit better. Essentially we're walking over a set of immediate uses and seeing which of those uses dominate a given block. Instead we can take the given block and compute its dominators into a bitmap. We then check if the immediate use blocks are in the bitmap. That turns out to be considerably faster, I believe that's because the immediate uses are typically clustered, thus there's a single element in the bitmap. Testing is two memory loads and a memory bit test. Contrast that to 9 memory loads for dominated_by_p if I'm counting correctly. That cuts the amount of time spent in DOM in half for the 69347 testcase. The second change is in cprop_into_successor_phis and was found as I was wandering the perf report. Essentially SSA_NAME_VALUE will always be null, an SSA_NAME or a constant (min_invariant). Thus the test that it's an SSA_NAME || is_gimple_min_invariant is totally useless. Bootstrapped and regression tested on x86. Also verified that for my bucket of .i files, there was no change in the resulting code. Given the major issues are resolved, I'm moving this to a P4. There's still a compile-time regression that's not accounted for, but it's relatively small and I suspect it's related to the computed goto used for a dispatch table -- which is certainly supported, but it's not the typical code pushed through GCC. The big regression left is intentional as we've intentionally upped the parameter for when to avoid gcse. Installed on the trunk. Jeff --------------080201030300070308000806 Content-Type: text/plain; charset=UTF-8; name="P" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="P" Content-length: 9220 Y29tbWl0IGMzYjdkZjM1MDQ2ZGI4MThjNGM0YjdkODA4YjVhMzQ3MWEwZWU5 YjkKQXV0aG9yOiBKZWZmIExhdyA8bGF3QHJlZGhhdC5jb20+CkRhdGU6ICAg RnJpIEphbiAyMiAxMzoxNzo1NCAyMDE2IC0wNzAwCgogICAgCVBSIG1pZGRs ZS1lbmQvNjkzNDcKICAgIAkqIHRyZWUtc3NhLWRvbS5jIChiYWNrX3Byb3Bh Z2F0ZV9lcXVpdmFsZW5jZXMpOiBGYWN0b3JlZCBvdXQgb2YKICAgIAlyZWNv cmRfdGVtcG9yYXJ5X2VxdWl2YWxlbmNlcy4gIFJld3JpdHRlbiB0byBhdm9p ZCB1bm5lY2Vzc2FyeSBjYWxscwogICAgCWludG8gZG9taW5hdGVkX2J5X3Au CiAgICAJKGNwcm9wX2ludG9fc3VjY2Vzc29yX3BoaXMpOiBBdm9pZCB1bm5l Y2Vzc2FyeSB0ZXN0cy4KCmRpZmYgLS1naXQgYS9nY2MvQ2hhbmdlTG9nIGIv Z2NjL0NoYW5nZUxvZwppbmRleCA4NWNkZTk0Li43M2RmODRmIDEwMDY0NAot LS0gYS9nY2MvQ2hhbmdlTG9nCisrKyBiL2djYy9DaGFuZ2VMb2cKQEAgLTEs MyArMSwxMSBAQAorMjAxNi0wMS0yMSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0 LmNvbT4KKworCVBSIG1pZGRsZS1lbmQvNjkzNDcKKwkqIHRyZWUtc3NhLWRv bS5jIChiYWNrX3Byb3BhZ2F0ZV9lcXVpdmFsZW5jZXMpOiBGYWN0b3JlZCBv dXQgb2YKKwlyZWNvcmRfdGVtcG9yYXJ5X2VxdWl2YWxlbmNlcy4gIFJld3Jp dHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjYWxscworCWludG8gZG9taW5h dGVkX2J5X3AuCisJKGNwcm9wX2ludG9fc3VjY2Vzc29yX3BoaXMpOiBBdm9p ZCB1bm5lY2Vzc2FyeSB0ZXN0cy4KKwogMjAxNi0wMS0yMiAgUmljaGFyZCBI ZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KIAogCVBSIHRhcmdldC82OTQx NgpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWRvbS5jIGIvZ2NjL3RyZWUt c3NhLWRvbS5jCmluZGV4IDg0YzlhNmEuLmI2OTBkOTIgMTAwNjQ0Ci0tLSBh L2djYy90cmVlLXNzYS1kb20uYworKysgYi9nY2MvdHJlZS1zc2EtZG9tLmMK QEAgLTgxOSw2ICs4MTksNzQgQEAgZG9tX3ZhbHVlaXplICh0cmVlIHQpCiAg IHJldHVybiB0OwogfQogCisvKiBXZSBoYXZlIGp1c3QgZm91bmQgYW4gZXF1 aXZhbGVuY2UgZm9yIExIUyBvbiBhbiBlZGdlIEUuCisgICBMb29rIGJhY2t3 YXJkcyB0byBvdGhlciB1c2VzIG9mIExIUyBhbmQgc2VlIGlmIHdlIGNhbiBk ZXJpdmUKKyAgIGFkZGl0aW9uYWwgZXF1aXZhbGVuY2VzIHRoYXQgYXJlIHZh bGlkIG9uIGVkZ2UgRS4gICovCitzdGF0aWMgdm9pZAorYmFja19wcm9wYWdh dGVfZXF1aXZhbGVuY2VzICh0cmVlIGxocywgZWRnZSBlLAorCQkJICAgICBj bGFzcyBjb25zdF9hbmRfY29waWVzICpjb25zdF9hbmRfY29waWVzKQorewor ICB1c2Vfb3BlcmFuZF9wIHVzZV9wOworICBpbW1fdXNlX2l0ZXJhdG9yIGl0 ZXI7CisgIGJpdG1hcCBkb21ieSA9IE5VTEw7CisgIGJhc2ljX2Jsb2NrIGRl c3QgPSBlLT5kZXN0OworCisgIC8qIEl0ZXJhdGUgb3ZlciB0aGUgdXNlcyBv ZiBMSFMgdG8gc2VlIGlmIGFueSBkb21pbmF0ZSBFLT5kZXN0LgorICAgICBJ ZiBzbywgdGhleSBtYXkgY3JlYXRlIHVzZWZ1bCBlcXVpdmFsZW5jZXMgdG9v LgorCisgICAgID8/PyAgSWYgdGhlIGNvZGUgZ2V0cyByZS1vcmdhbml6ZWQg dG8gYSB3b3JrbGlzdCB0byBjYXRjaCBtb3JlCisgICAgIGluZGlyZWN0IG9w cG9ydHVuaXRpZXMgYW5kIGl0IGlzIG1hZGUgdG8gaGFuZGxlIFBISXMgdGhl biB0aGlzCisgICAgIHNob3VsZCBvbmx5IGNvbnNpZGVyIHVzZV9zdG10cyBp biBiYXNpYy1ibG9ja3Mgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQuICAqLwor ICBGT1JfRUFDSF9JTU1fVVNFX0ZBU1QgKHVzZV9wLCBpdGVyLCBsaHMpCisg ICAgeworICAgICAgZ2ltcGxlICp1c2Vfc3RtdCA9IFVTRV9TVE1UICh1c2Vf cCk7CisKKyAgICAgIC8qIE9mdGVuIHRoZSB1c2UgaXMgaW4gREVTVCwgd2hp Y2ggd2UgdHJpdmlhbGx5IGtub3cgd2UgY2FuJ3QgdXNlLgorCSBUaGlzIGlz IGNoZWFwZXIgdGhhbiB0aGUgZG9taW5hdG9yIHNldCB0ZXN0cyBiZWxvdy4g ICovCisgICAgICBpZiAoZGVzdCA9PSBnaW1wbGVfYmIgKHVzZV9zdG10KSkK Kwljb250aW51ZTsKKworICAgICAgLyogRmlsdGVyIG91dCBzdGF0ZW1lbnRz IHRoYXQgY2FuIG5ldmVyIHByb2R1Y2UgYSB1c2VmdWwKKwkgZXF1aXZhbGVu Y2UuICAqLworICAgICAgdHJlZSBsaHMyID0gZ2ltcGxlX2dldF9saHMgKHVz ZV9zdG10KTsKKyAgICAgIGlmICghbGhzMiB8fCBUUkVFX0NPREUgKGxoczIp ICE9IFNTQV9OQU1FKQorCWNvbnRpbnVlOworCisgICAgICAvKiBQcm9maWxp bmcgaGFzIHNob3duIHRoZSBkb21pbmF0aW9uIHRlc3RzIGhlcmUgY2FuIGJl IGZhaXJseQorCSBleHBlbnNpdmUuICBXZSBnZXQgc2lnbmlmaWNhbnQgaW1w cm92ZW1lbnRzIGJ5IGJ1aWxkaW5nIHRoZQorCSBzZXQgb2YgYmxvY2tzIHRo YXQgZG9taW5hdGUgQkIuICBXZSBjYW4gdGhlbiBqdXN0IHRlc3QKKwkgZm9y IHNldCBtZW1iZXJzaGlwIGJlbG93LgorCisJIFdlIGFsc28gaW5pdGlhbGl6 ZSB0aGUgc2V0IGxhemlseSBzaW5jZSBvZnRlbiB0aGUgb25seSB1c2VzCisJ IGFyZSBnb2luZyB0byBiZSBpbiB0aGUgc2FtZSBibG9jayBhcyBERVNULiAg Ki8KKyAgICAgIGlmICghZG9tYnkpCisJeworCSAgZG9tYnkgPSBCSVRNQVBf QUxMT0MgKE5VTEwpOworCSAgYmFzaWNfYmxvY2sgYmIgPSBnZXRfaW1tZWRp YXRlX2RvbWluYXRvciAoQ0RJX0RPTUlOQVRPUlMsIGRlc3QpOworCSAgd2hp bGUgKGJiKQorCSAgICB7CisJICAgICAgYml0bWFwX3NldF9iaXQgKGRvbWJ5 LCBiYi0+aW5kZXgpOworCSAgICAgIGJiID0gZ2V0X2ltbWVkaWF0ZV9kb21p bmF0b3IgKENESV9ET01JTkFUT1JTLCBiYik7CisJICAgIH0KKwl9CisKKyAg ICAgIC8qIFRoaXMgdGVzdHMgaWYgVVNFX1NUTVQgZG9lcyBub3QgZG9taW5h dGUgREVTVC4gICovCisgICAgICBpZiAoIWJpdG1hcF9iaXRfcCAoZG9tYnks IGdpbXBsZV9iYiAodXNlX3N0bXQpLT5pbmRleCkpCisJY29udGludWU7CisK KyAgICAgIC8qIEF0IHRoaXMgcG9pbnQgVVNFX1NUTVQgZG9taW5hdGVzIERF U1QgYW5kIG1heSByZXN1bHQgaW4gYQorCSB1c2VmdWwgZXF1aXZhbGVuY2Uu ICBUcnkgdG8gc2ltcGxpZnkgaXRzIFJIUyB0byBhIGNvbnN0YW50CisJIG9y IFNTQV9OQU1FLiAgKi8KKyAgICAgIHRyZWUgcmVzID0gZ2ltcGxlX2ZvbGRf c3RtdF90b19jb25zdGFudF8xICh1c2Vfc3RtdCwgZG9tX3ZhbHVlaXplLAor CQkJCQkJIG5vX2ZvbGxvd19zc2FfZWRnZXMpOworICAgICAgaWYgKHJlcyAm JiAoVFJFRV9DT0RFIChyZXMpID09IFNTQV9OQU1FIHx8IGlzX2dpbXBsZV9t aW5faW52YXJpYW50IChyZXMpKSkKKwlyZWNvcmRfZXF1YWxpdHkgKGxoczIs IHJlcywgY29uc3RfYW5kX2NvcGllcyk7CisgICAgfQorCisgIGlmIChkb21i eSkKKyAgICBCSVRNQVBfRlJFRSAoZG9tYnkpOworfQorCiAvKiBSZWNvcmQg aW50byBDT05TVF9BTkRfQ09QSUVTIGFuZCBBVkFJTF9FWFBSU19TVEFDSyBh bnkgZXF1aXZhbGVuY2VzIGltcGxpZWQKICAgIGJ5IHRyYXZlcnNpbmcgZWRn ZSBFICh3aGljaCBhcmUgY2FjaGVkIGluIEUtPmF1eCkuCiAKQEAgLTgzNiwx OSArOTA0LDIzIEBAIHJlY29yZF90ZW1wb3JhcnlfZXF1aXZhbGVuY2VzIChl ZGdlIGUsCiAgIGlmIChlZGdlX2luZm8pCiAgICAgewogICAgICAgY29uZF9l cXVpdmFsZW5jZSAqZXE7CisgICAgICAvKiBJZiB3ZSBoYXZlIDAgPSBDT05E IG9yIDEgPSBDT05EIGVxdWl2YWxlbmNlcywgcmVjb3JkIHRoZW0KKwkgaW50 byBvdXIgZXhwcmVzc2lvbiBoYXNoIHRhYmxlcy4gICovCisgICAgICBmb3Ig KGkgPSAwOyBlZGdlX2luZm8tPmNvbmRfZXF1aXZhbGVuY2VzLml0ZXJhdGUg KGksICZlcSk7ICsraSkKKwlyZWNvcmRfY29uZCAoZXEsIGF2YWlsX2V4cHJz X3N0YWNrKTsKKwogICAgICAgdHJlZSBsaHMgPSBlZGdlX2luZm8tPmxoczsK LSAgICAgIHRyZWUgcmhzID0gZWRnZV9pbmZvLT5yaHM7CisgICAgICBpZiAo IWxocyB8fCBUUkVFX0NPREUgKGxocykgIT0gU1NBX05BTUUpCisJcmV0dXJu OwogCi0gICAgICAvKiBJZiB3ZSBoYXZlIGEgc2ltcGxlIE5BTUUgPSBWQUxV RSBlcXVpdmFsZW5jZSwgcmVjb3JkIGl0LiAgKi8KLSAgICAgIGlmIChsaHMp Ci0JcmVjb3JkX2VxdWFsaXR5IChsaHMsIHJocywgY29uc3RfYW5kX2NvcGll cyk7CisgICAgICAvKiBSZWNvcmQgdGhlIHNpbXBsZSBOQU1FID0gVkFMVUUg ZXF1aXZhbGVuY2UuICAqLworICAgICAgdHJlZSByaHMgPSBlZGdlX2luZm8t PnJoczsKKyAgICAgIHJlY29yZF9lcXVhbGl0eSAobGhzLCByaHMsIGNvbnN0 X2FuZF9jb3BpZXMpOwogCiAgICAgICAvKiBJZiBMSFMgaXMgYW4gU1NBX05B TUUgYW5kIFJIUyBpcyBhIGNvbnN0YW50IGludGVnZXIgYW5kIExIUyB3YXMK IAkgc2V0IHZpYSBhIHdpZGVuaW5nIHR5cGUgY29udmVyc2lvbiwgdGhlbiB3 ZSBtYXkgYmUgYWJsZSB0byByZWNvcmQKIAkgYWRkaXRpb25hbCBlcXVpdmFs ZW5jZXMuICAqLwotICAgICAgaWYgKGxocwotCSAgJiYgVFJFRV9DT0RFIChs aHMpID09IFNTQV9OQU1FCi0JICAmJiBUUkVFX0NPREUgKHJocykgPT0gSU5U RUdFUl9DU1QpCisgICAgICBpZiAoVFJFRV9DT0RFIChyaHMpID09IElOVEVH RVJfQ1NUKQogCXsKIAkgIGdpbXBsZSAqZGVmc3RtdCA9IFNTQV9OQU1FX0RF Rl9TVE1UIChsaHMpOwogCkBAIC04NzUsNDUgKzk0NywxMCBAQCByZWNvcmRf dGVtcG9yYXJ5X2VxdWl2YWxlbmNlcyAoZWRnZSBlLAogCSAgICB9CiAJfQog Ci0gICAgICAvKiBJZiBMSFMgaXMgYW4gU1NBX05BTUUgd2l0aCBhIG5ldyBl cXVpdmFsZW5jeSB0aGVuIHRyeSBpZgotICAgICAgICAgc3RtdHMgd2l0aCB1 c2VzIG9mIHRoYXQgTEhTIHRoYXQgZG9taW5hdGUgdGhlIGVkZ2UgZGVzdGlu YXRpb24KLQkgc2ltcGxpZnkgYW5kIGFsbG93IGZ1cnRoZXIgZXF1aXZhbGVu Y2VzIHRvIGJlIHJlY29yZGVkLiAgKi8KLSAgICAgIGlmIChsaHMgJiYgVFJF RV9DT0RFIChsaHMpID09IFNTQV9OQU1FKQotCXsKLQkgIHVzZV9vcGVyYW5k X3AgdXNlX3A7Ci0JICBpbW1fdXNlX2l0ZXJhdG9yIGl0ZXI7Ci0JICBGT1Jf RUFDSF9JTU1fVVNFX0ZBU1QgKHVzZV9wLCBpdGVyLCBsaHMpCi0JICAgIHsK LQkgICAgICBnaW1wbGUgKnVzZV9zdG10ID0gVVNFX1NUTVQgKHVzZV9wKTsK LQotCSAgICAgIC8qIE9ubHkgYm90aGVyIHRvIHJlY29yZCBtb3JlIGVxdWl2 YWxlbmNlcyBmb3IgbGhzIHRoYXQKLQkgICAgICAgICBjYW4gYmUgZGlyZWN0 bHkgdXNlZCBieSBlLT5kZXN0LgotCQkgPz8/ICBJZiB0aGUgY29kZSBnZXRz IHJlLW9yZ2FuaXplZCB0byBhIHdvcmtsaXN0IHRvCi0JCSBjYXRjaCBtb3Jl IGluZGlyZWN0IG9wcG9ydHVuaXRpZXMgYW5kIGl0IGlzIG1hZGUgdG8KLQkJ IGhhbmRsZSBQSElzIHRoZW4gdGhpcyBzaG91bGQgb25seSBjb25zaWRlciB1 c2Vfc3RtdHMKLQkJIGluIGJhc2ljLWJsb2NrcyB3ZSBoYXZlIGFscmVhZHkg dmlzaXRlZC4gICovCi0JICAgICAgaWYgKGUtPmRlc3QgPT0gZ2ltcGxlX2Ji ICh1c2Vfc3RtdCkKLQkJICB8fCAhZG9taW5hdGVkX2J5X3AgKENESV9ET01J TkFUT1JTLAotCQkJCSAgICAgIGUtPmRlc3QsIGdpbXBsZV9iYiAodXNlX3N0 bXQpKSkKLQkJY29udGludWU7Ci0JICAgICAgdHJlZSBsaHMyID0gZ2ltcGxl X2dldF9saHMgKHVzZV9zdG10KTsKLQkgICAgICBpZiAobGhzMiAmJiBUUkVF X0NPREUgKGxoczIpID09IFNTQV9OQU1FKQotCQl7Ci0JCSAgdHJlZSByZXMK LQkJICAgID0gZ2ltcGxlX2ZvbGRfc3RtdF90b19jb25zdGFudF8xICh1c2Vf c3RtdCwgZG9tX3ZhbHVlaXplLAotCQkJCQkJICAgICAgbm9fZm9sbG93X3Nz YV9lZGdlcyk7Ci0JCSAgaWYgKHJlcwotCQkgICAgICAmJiAoVFJFRV9DT0RF IChyZXMpID09IFNTQV9OQU1FCi0JCQkgIHx8IGlzX2dpbXBsZV9taW5faW52 YXJpYW50IChyZXMpKSkKLQkJICAgIHJlY29yZF9lcXVhbGl0eSAobGhzMiwg cmVzLCBjb25zdF9hbmRfY29waWVzKTsKLQkJfQotCSAgICB9Ci0JfQotCi0g ICAgICAvKiBJZiB3ZSBoYXZlIDAgPSBDT05EIG9yIDEgPSBDT05EIGVxdWl2 YWxlbmNlcywgcmVjb3JkIHRoZW0KLQkgaW50byBvdXIgZXhwcmVzc2lvbiBo YXNoIHRhYmxlcy4gICovCi0gICAgICBmb3IgKGkgPSAwOyBlZGdlX2luZm8t PmNvbmRfZXF1aXZhbGVuY2VzLml0ZXJhdGUgKGksICZlcSk7ICsraSkKLQly ZWNvcmRfY29uZCAoZXEsIGF2YWlsX2V4cHJzX3N0YWNrKTsKKyAgICAgIC8q IEFueSBlcXVpdmFsZW5jZSBmb3VuZCBmb3IgTEhTIG1heSByZXN1bHQgaW4g YWRkaXRpb25hbAorCSBlcXVpdmFsZW5jZXMgZm9yIG90aGVyIHVzZXMgb2Yg TEhTIHRoYXQgd2UgaGF2ZSBhbHJlYWR5CisJIHByb2Nlc3NlZC4gICovCisg ICAgICBiYWNrX3Byb3BhZ2F0ZV9lcXVpdmFsZW5jZXMgKGxocywgZSwgY29u c3RfYW5kX2NvcGllcyk7CiAgICAgfQogfQogCkBAIC0xMzIxLDggKzEzNTgs NiBAQCBjcHJvcF9pbnRvX3N1Y2Nlc3Nvcl9waGlzIChiYXNpY19ibG9jayBi YiwKIAkgIG5ld192YWwgPSBTU0FfTkFNRV9WQUxVRSAob3JpZ192YWwpOwog CSAgaWYgKG5ld192YWwKIAkgICAgICAmJiBuZXdfdmFsICE9IG9yaWdfdmFs Ci0JICAgICAgJiYgKFRSRUVfQ09ERSAobmV3X3ZhbCkgPT0gU1NBX05BTUUK LQkJICB8fCBpc19naW1wbGVfbWluX2ludmFyaWFudCAobmV3X3ZhbCkpCiAJ ICAgICAgJiYgbWF5X3Byb3BhZ2F0ZV9jb3B5IChvcmlnX3ZhbCwgbmV3X3Zh bCkpCiAJICAgIHByb3BhZ2F0ZV92YWx1ZSAob3JpZ19wLCBuZXdfdmFsKTsK IAl9Cg== --------------080201030300070308000806--