From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15819 invoked by alias); 20 Mar 2015 07:55:14 -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 15724 invoked by uid 89); 20 Mar 2015 07:55:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KAM_FROM_URIBL_PCCC,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-lb0-f171.google.com Received: from mail-lb0-f171.google.com (HELO mail-lb0-f171.google.com) (209.85.217.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 20 Mar 2015 07:55:12 +0000 Received: by lbblx11 with SMTP id lx11so47538234lbb.3 for ; Fri, 20 Mar 2015 00:55:08 -0700 (PDT) X-Received: by 10.112.143.195 with SMTP id sg3mr22081520lbb.95.1426838108381; Fri, 20 Mar 2015 00:55:08 -0700 (PDT) MIME-Version: 1.0 Received: by 10.25.83.130 with HTTP; Fri, 20 Mar 2015 00:54:27 -0700 (PDT) In-Reply-To: <000601d04a5c$a0c0f030$e242d090$@arm.com> References: <000501d049d3$079385a0$16ba90e0$@arm.com> <000601d04a5c$a0c0f030$e242d090$@arm.com> From: Steven Bosscher Date: Fri, 20 Mar 2015 07:55:00 -0000 Message-ID: Subject: Re: [PATCH, GCC, stage1] Fallback to copy-prop if constant-prop not possible To: "Thomas Preud'homme" Cc: GCC Patches Content-Type: multipart/mixed; boundary=089e0112c84a9ac4380511b3a288 X-IsSubscribed: yes X-SW-Source: 2015-03/txt/msg01048.txt.bz2 --089e0112c84a9ac4380511b3a288 Content-Type: text/plain; charset=UTF-8 Content-length: 1834 On Tue, Feb 17, 2015 at 3:51 AM, Thomas Preud'homme wrote: >> > - else if (REG_P (src) >> > - && REGNO (src) >= FIRST_PSEUDO_REGISTER >> > - && REGNO (src) != regno) >> > - { >> > - if (try_replace_reg (reg_used, src, insn)) >> > + else if (src_reg && REG_P (src_reg) >> > + && REGNO (src_reg) >= FIRST_PSEUDO_REGISTER >> > + && REGNO (src_reg) != regno >> > + && try_replace_reg (reg_used, src_reg, insn)) >> >> Likewise for the REG_P and ">= FIRST_PSEUDO_REGISTER" tests here >> (with >> the equivalent and IMHO preferable HARD_REGISTER_P test in >> find_avail_set()). > > I'm not sure I follow you here. First, it seems to me that the equivalent > test is rather REG_P && !HARD_REGISTER_P since here it checks if it's > a pseudo register. > > Then, do you mean the test can be simply removed because of the > REG_P && !HARD_REGISTER_P in hash_scan_set () called indirectly by > compute_hash_table () when called in one_cprop_pass () before any > cprop_insn ()? Or do you mean I should move the check in > find_avail_set ()? What I meant, is that I believe the tests are already done in hash_scan_set and should be redundant in cprop_insn (i.e. the test can be replaced with gcc_[checking_]assert). I've attached a patch with some changes to it: introduce cprop_reg_p() to get rid of all the "REG_P && regno > FIRST_PSEUDO_REGISTER" tests. I still have the cprop_constant_p and cprop_reg_p tests in cprop_insn but this weekend I'll try with gcc_checking_asserts instead. Please have a look at the patch and let me know if you like it (given it's mostly yours I hope you do like it ;-) Bootstrapped & tested on powerpc64-unknown-linux-gnu. In building all of cc1, 35 extra copies are propagated with the patch. Ciao! Steven --089e0112c84a9ac4380511b3a288 Content-Type: text/plain; charset=US-ASCII; name="cprop_const_and_reg.diff" Content-Disposition: attachment; filename="cprop_const_and_reg.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7had8fb0 Content-length: 9874 SW5kZXg6IGNwcm9wLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3By b3AuYwkocmV2aXNpb24gMjIxNTIzKQorKysgY3Byb3AuYwkod29ya2luZyBj b3B5KQpAQCAtMjg1LDYgKzI4NSwxNSBAQCBjcHJvcF9jb25zdGFudF9wIChj b25zdF9ydHggeCkKICAgcmV0dXJuIENPTlNUQU5UX1AgKHgpICYmIChHRVRf Q09ERSAoeCkgIT0gQ09OU1QgfHwgc2hhcmVkX2NvbnN0X3AgKHgpKTsKIH0K IAorLyogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJ0eCBYIHNob3VsZCBiZSB0 cmVhdGVkIGFzIGEgcmVnaXN0ZXIgdGhhdCBjYW4KKyAgIGJlIHByb3BhZ2F0 ZWQuICBBbnkgcHNldWRvLXJlZ2lzdGVyIGlzIGZpbmUuICAqLworCitzdGF0 aWMgYm9vbAorY3Byb3BfcmVnX3AgKGNvbnN0X3J0eCB4KQoreworICByZXR1 cm4gUkVHX1AgKHgpICYmICFIQVJEX1JFR0lTVEVSX1AgKHgpOworfQorCiAv KiBTY2FuIFNFVCBwcmVzZW50IGluIElOU04gYW5kIGFkZCBhbiBlbnRyeSB0 byB0aGUgaGFzaCBUQUJMRS4KICAgIElNUExJQ0lUIGlzIHRydWUgaWYgaXQn cyBhbiBpbXBsaWNpdCBzZXQsIGZhbHNlIG90aGVyd2lzZS4gICovCiAKQEAg LTI5NSw4ICszMDQsNyBAQCBoYXNoX3NjYW5fc2V0IChydHggc2V0LCBydHhf aW5zbiAqaW5zbiwgc3RydWN0IGhhcwogICBydHggc3JjID0gU0VUX1NSQyAo c2V0KTsKICAgcnR4IGRlc3QgPSBTRVRfREVTVCAoc2V0KTsKIAotICBpZiAo UkVHX1AgKGRlc3QpCi0gICAgICAmJiAhIEhBUkRfUkVHSVNURVJfUCAoZGVz dCkKKyAgaWYgKGNwcm9wX3JlZ19wIChkZXN0KQogICAgICAgJiYgcmVnX2F2 YWlsYWJsZV9wIChkZXN0LCBpbnNuKQogICAgICAgJiYgY2FuX2NvcHlfcCAo R0VUX01PREUgKGRlc3QpKSkKICAgICB7CkBAIC0zMjEsOSArMzI5LDggQEAg aGFzaF9zY2FuX3NldCAocnR4IHNldCwgcnR4X2luc24gKmluc24sIHN0cnVj dCBoYXMKIAlzcmMgPSBYRVhQIChub3RlLCAwKSwgc2V0ID0gZ2VuX3J0eF9T RVQgKFZPSURtb2RlLCBkZXN0LCBzcmMpOwogCiAgICAgICAvKiBSZWNvcmQg c2V0cyBmb3IgY29uc3RhbnQvY29weSBwcm9wYWdhdGlvbi4gICovCi0gICAg ICBpZiAoKFJFR19QIChzcmMpCisgICAgICBpZiAoKGNwcm9wX3JlZ19wIChz cmMpCiAJICAgJiYgc3JjICE9IGRlc3QKLQkgICAmJiAhIEhBUkRfUkVHSVNU RVJfUCAoc3JjKQogCSAgICYmIHJlZ19hdmFpbGFibGVfcCAoc3JjLCBpbnNu KSkKIAkgIHx8IGNwcm9wX2NvbnN0YW50X3AgKHNyYykpCiAJaW5zZXJ0X3Nl dF9pbl90YWJsZSAoZGVzdCwgc3JjLCBpbnNuLCB0YWJsZSwgaW1wbGljaXQp OwpAQCAtODIxLDE1ICs4MjgsMTUgQEAgdHJ5X3JlcGxhY2VfcmVnIChydHgg ZnJvbSwgcnR4IHRvLCBydHhfaW5zbiAqaW5zbikKICAgcmV0dXJuIHN1Y2Nl c3M7CiB9CiAKLS8qIEZpbmQgYSBzZXQgb2YgUkVHTk9zIHRoYXQgYXJlIGF2 YWlsYWJsZSBvbiBlbnRyeSB0byBJTlNOJ3MgYmxvY2suICBSZXR1cm4KLSAg IE5VTEwgbm8gc3VjaCBzZXQgaXMgZm91bmQuICAqLworLyogRmluZCBhIHNl dCBvZiBSRUdOT3MgdGhhdCBhcmUgYXZhaWxhYmxlIG9uIGVudHJ5IHRvIElO U04ncyBibG9jay4gIElmIGZvdW5kLAorICAgU0VUX1JFVFswXSB3aWxsIGJl IGFzc2lnbmVkIGEgc2V0IHdpdGggYSByZWdpc3RlciBzb3VyY2UgYW5kIFNF VF9SRVRbMV0gYQorICAgc2V0IHdpdGggYSBjb25zdGFudCBzb3VyY2UuICBJ ZiBub3QgZm91bmQgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgaXMgc2V0IHRv CisgICBOVUxMLiAgKi8KIAotc3RhdGljIHN0cnVjdCBjcHJvcF9leHByICoK LWZpbmRfYXZhaWxfc2V0IChpbnQgcmVnbm8sIHJ0eF9pbnNuICppbnNuKQor c3RhdGljIHZvaWQKK2ZpbmRfYXZhaWxfc2V0IChpbnQgcmVnbm8sIHJ0eF9p bnNuICppbnNuLCBzdHJ1Y3QgY3Byb3BfZXhwciAqc2V0X3JldFsyXSkKIHsK LSAgLyogU0VUMSBjb250YWlucyB0aGUgbGFzdCBzZXQgZm91bmQgdGhhdCBj YW4gYmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBmb3IKLSAgICAgdXNlIGlu IGEgc3Vic3RpdHV0aW9uLiAgKi8KLSAgc3RydWN0IGNwcm9wX2V4cHIgKnNl dDEgPSAwOworICBzZXRfcmV0WzBdID0gc2V0X3JldFsxXSA9IE5VTEw7CiAK ICAgLyogTG9vcHMgYXJlIG5vdCBwb3NzaWJsZSBoZXJlLiAgVG8gZ2V0IGEg bG9vcCB3ZSB3b3VsZCBuZWVkIHR3byBzZXRzCiAgICAgIGF2YWlsYWJsZSBh dCB0aGUgc3RhcnQgb2YgdGhlIGJsb2NrIGNvbnRhaW5pbmcgSU5TTi4gIGku ZS4gd2Ugd291bGQKQEAgLTg2OSw4ICs4NzYsMTAgQEAgdHJ5X3JlcGxhY2Vf cmVnIChydHggZnJvbSwgcnR4IHRvLCBydHhfaW5zbiAqaW5zbikKICAgICAg ICAgIElmIHRoZSBzb3VyY2Ugb3BlcmFuZCBjaGFuZ2VkLCB3ZSBtYXkgc3Rp bGwgdXNlIGl0IGZvciB0aGUgbmV4dAogICAgICAgICAgaXRlcmF0aW9uIG9m IHRoaXMgbG9vcCwgYnV0IHdlIG1heSBub3QgdXNlIGl0IGZvciBzdWJzdGl0 dXRpb25zLiAgKi8KIAotICAgICAgaWYgKGNwcm9wX2NvbnN0YW50X3AgKHNy YykgfHwgcmVnX25vdF9zZXRfcCAoc3JjLCBpbnNuKSkKLQlzZXQxID0gc2V0 OworICAgICAgaWYgKGNwcm9wX2NvbnN0YW50X3AgKHNyYykpCisJc2V0X3Jl dFsxXSA9IHNldDsKKyAgICAgIGVsc2UgaWYgKHJlZ19ub3Rfc2V0X3AgKHNy YywgaW5zbikpCisJc2V0X3JldFswXSA9IHNldDsKIAogICAgICAgLyogSWYg dGhlIHNvdXJjZSBvZiB0aGUgc2V0IGlzIGFueXRoaW5nIGV4Y2VwdCBhIHJl Z2lzdGVyLCB0aGVuCiAJIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRo ZSBjb3B5IGNoYWluLiAgKi8KQEAgLTg4MSwxMCArODkwLDYgQEAgdHJ5X3Jl cGxhY2VfcmVnIChydHggZnJvbSwgcnR4IHRvLCBydHhfaW5zbiAqaW5zbikK IAkgYW5kIHNlZSBpZiB3ZSBoYXZlIGFuIGF2YWlsYWJsZSBjb3B5IGludG8g U1JDLiAgKi8KICAgICAgIHJlZ25vID0gUkVHTk8gKHNyYyk7CiAgICAgfQot Ci0gIC8qIFNFVDEgaG9sZHMgdGhlIGxhc3Qgc2V0IHRoYXQgd2FzIGF2YWls YWJsZSBhbmQgYW50aWNpcGF0YWJsZSBhdAotICAgICBJTlNOLiAgKi8KLSAg cmV0dXJuIHNldDE7CiB9CiAKIC8qIFN1YnJvdXRpbmUgb2YgY3Byb3BfaW5z biB0aGF0IHRyaWVzIHRvIHByb3BhZ2F0ZSBjb25zdGFudHMgaW50bwpAQCAt MTA1MCw3ICsxMDU1LDggQEAgY3Byb3BfaW5zbiAocnR4X2luc24gKmluc24p CiAgIGludCBjaGFuZ2VkID0gMCwgY2hhbmdlZF90aGlzX3JvdW5kOwogICBy dHggbm90ZTsKIAotcmV0cnk6CisgIGRvCisgICAgewogICBjaGFuZ2VkX3Ro aXNfcm91bmQgPSAwOwogICByZWdfdXNlX2NvdW50ID0gMDsKICAgbm90ZV91 c2VzICgmUEFUVEVSTiAoaW5zbiksIGZpbmRfdXNlZF9yZWdzLCBOVUxMKTsK QEAgLTEwNjQsOCArMTA3MCw4IEBAIGNwcm9wX2luc24gKHJ0eF9pbnNuICpp bnNuKQogICAgIHsKICAgICAgIHJ0eCByZWdfdXNlZCA9IHJlZ191c2VfdGFi bGVbaV07CiAgICAgICB1bnNpZ25lZCBpbnQgcmVnbm8gPSBSRUdOTyAocmVn X3VzZWQpOwotICAgICAgcnR4IHNyYzsKLSAgICAgIHN0cnVjdCBjcHJvcF9l eHByICpzZXQ7CisJICBydHggc3JjX2NzdCA9IE5VTEwsIHNyY19yZWcgPSBO VUxMOworCSAgc3RydWN0IGNwcm9wX2V4cHIgKnNldFsyXTsKIAogICAgICAg LyogSWYgdGhlIHJlZ2lzdGVyIGhhcyBhbHJlYWR5IGJlZW4gc2V0IGluIHRo aXMgYmxvY2ssIHRoZXJlJ3MKIAkgbm90aGluZyB3ZSBjYW4gZG8uICAqLwpA QCAtMTA3NCwxNyArMTA4MCwxNiBAQCBjcHJvcF9pbnNuIChydHhfaW5zbiAq aW5zbikKIAogICAgICAgLyogRmluZCBhbiBhc3NpZ25tZW50IHRoYXQgc2V0 cyByZWdfdXNlZCBhbmQgaXMgYXZhaWxhYmxlCiAJIGF0IHRoZSBzdGFydCBv ZiB0aGUgYmxvY2suICAqLwotICAgICAgc2V0ID0gZmluZF9hdmFpbF9zZXQg KHJlZ25vLCBpbnNuKTsKLSAgICAgIGlmICghIHNldCkKLQljb250aW51ZTsK KwkgIGZpbmRfYXZhaWxfc2V0IChyZWdubywgaW5zbiwgc2V0KTsKKwkgIGlm IChzZXRbMF0pCisJICAgIHNyY19yZWcgPSBzZXRbMF0tPnNyYzsKKwkgIGlm IChzZXRbMV0pCisJICAgIHNyY19jc3QgPSBzZXRbMV0tPnNyYzsKIAotICAg ICAgc3JjID0gc2V0LT5zcmM7Ci0KICAgICAgIC8qIENvbnN0YW50IHByb3Bh Z2F0aW9uLiAgKi8KLSAgICAgIGlmIChjcHJvcF9jb25zdGFudF9wIChzcmMp KQorCSAgaWYgKHNyY19jc3QgJiYgY3Byb3BfY29uc3RhbnRfcCAoc3JjX2Nz dCkKKwkgICAgICAmJiBjb25zdHByb3BfcmVnaXN0ZXIgKHJlZ191c2VkLCBz cmNfY3N0LCBpbnNuKSkKIAl7Ci0gICAgICAgICAgaWYgKGNvbnN0cHJvcF9y ZWdpc3RlciAocmVnX3VzZWQsIHNyYywgaW5zbikpCi0JICAgIHsKIAkgICAg ICBjaGFuZ2VkX3RoaXNfcm91bmQgPSBjaGFuZ2VkID0gMTsKIAkgICAgICBn bG9iYWxfY29uc3RfcHJvcF9jb3VudCsrOwogCSAgICAgIGlmIChkdW1wX2Zp bGUgIT0gTlVMTCkKQEAgLTEwOTMsMTkgKzEwOTgsMTcgQEAgY3Byb3BfaW5z biAocnR4X2luc24gKmluc24pCiAJCQkgICAiR0xPQkFMIENPTlNULVBST1A6 IFJlcGxhY2luZyByZWcgJWQgaW4gIiwgcmVnbm8pOwogCQkgIGZwcmludGYg KGR1bXBfZmlsZSwgImluc24gJWQgd2l0aCBjb25zdGFudCAiLAogCQkJICAg SU5TTl9VSUQgKGluc24pKTsKLQkJICBwcmludF9ydGwgKGR1bXBfZmlsZSwg c3JjKTsKKwkJICBwcmludF9ydGwgKGR1bXBfZmlsZSwgc3JjX2NzdCk7CiAJ CSAgZnByaW50ZiAoZHVtcF9maWxlLCAiXG4iKTsKIAkJfQogCSAgICAgIGlm IChpbnNuLT5kZWxldGVkICgpKQogCQlyZXR1cm4gMTsKIAkgICAgfQotCX0K LSAgICAgIGVsc2UgaWYgKFJFR19QIChzcmMpCi0JICAgICAgICYmIFJFR05P IChzcmMpID49IEZJUlNUX1BTRVVET19SRUdJU1RFUgotCSAgICAgICAmJiBS RUdOTyAoc3JjKSAhPSByZWdubykKKwkgIC8qIENvcHkgcHJvcGFnYXRpb24u ICAqLworCSAgZWxzZSBpZiAoc3JjX3JlZyAmJiBjcHJvcF9yZWdfcCAoc3Jj X3JlZykKKwkJICAgJiYgUkVHTk8gKHNyY19yZWcpICE9IHJlZ25vCisJCSAg ICYmIHRyeV9yZXBsYWNlX3JlZyAocmVnX3VzZWQsIHNyY19yZWcsIGluc24p KQogCXsKLQkgIGlmICh0cnlfcmVwbGFjZV9yZWcgKHJlZ191c2VkLCBzcmMs IGluc24pKQotCSAgICB7CiAJICAgICAgY2hhbmdlZF90aGlzX3JvdW5kID0g Y2hhbmdlZCA9IDE7CiAJICAgICAgZ2xvYmFsX2NvcHlfcHJvcF9jb3VudCsr OwogCSAgICAgIGlmIChkdW1wX2ZpbGUgIT0gTlVMTCkKQEAgLTExMTMsNyAr MTExNiw3IEBAIGNwcm9wX2luc24gKHJ0eF9pbnNuICppbnNuKQogCQkgIGZw cmludGYgKGR1bXBfZmlsZSwKIAkJCSAgICJHTE9CQUwgQ09QWS1QUk9QOiBS ZXBsYWNpbmcgcmVnICVkIGluIGluc24gJWQiLAogCQkJICAgcmVnbm8sIElO U05fVUlEIChpbnNuKSk7Ci0JCSAgZnByaW50ZiAoZHVtcF9maWxlLCAiIHdp dGggcmVnICVkXG4iLCBSRUdOTyAoc3JjKSk7CisJCSAgZnByaW50ZiAoZHVt cF9maWxlLCAiIHdpdGggcmVnICVkXG4iLCBSRUdOTyAoc3JjX3JlZykpOwog CQl9CiAKIAkgICAgICAvKiBUaGUgb3JpZ2luYWwgaW5zbiBzZXR0aW5nIHJl Z191c2VkIG1heSBvciBtYXkgbm90IG5vdyBiZQpAQCAtMTEyMywxMiArMTEy NiwxMCBAQCBjcHJvcF9pbnNuIChydHhfaW5zbiAqaW5zbikKIAkJIGFuZCBt YWRlIHRoaW5ncyB3b3JzZS4gICovCiAJICAgIH0KIAl9Ci0KKyAgICB9CiAg ICAgICAvKiBJZiB0cnlfcmVwbGFjZV9yZWcgc2ltcGxpZmllZCB0aGUgaW5z biwgdGhlIHJlZ3MgZm91bmQKIAkgYnkgZmluZF91c2VkX3JlZ3MgbWF5IG5v dCBiZSB2YWxpZCBhbnltb3JlLiAgU3RhcnQgb3Zlci4gICovCi0gICAgICBp ZiAoY2hhbmdlZF90aGlzX3JvdW5kKQotCWdvdG8gcmV0cnk7Ci0gICAgfQor ICB3aGlsZSAoY2hhbmdlZF90aGlzX3JvdW5kKTsKIAogICBpZiAoY2hhbmdl ZCAmJiBERUJVR19JTlNOX1AgKGluc24pKQogICAgIHJldHVybiAwOwpAQCAt MTE5MSw3ICsxMTkyLDcgQEAgZG9fbG9jYWxfY3Byb3AgKHJ0eCB4LCBydHhf aW5zbiAqaW5zbikKICAgLyogUnVsZSBvdXQgVVNFIGluc3RydWN0aW9ucyBh bmQgQVNNIHN0YXRlbWVudHMgYXMgd2UgZG9uJ3Qgd2FudCB0bwogICAgICBj aGFuZ2UgdGhlIGhhcmQgcmVnaXN0ZXJzIG1lbnRpb25lZC4gICovCiAgIGlm IChSRUdfUCAoeCkKLSAgICAgICYmIChSRUdOTyAoeCkgPj0gRklSU1RfUFNF VURPX1JFR0lTVEVSCisgICAgICAmJiAoY3Byb3BfcmVnX3AgKHgpCiAgICAg ICAgICAgfHwgKEdFVF9DT0RFIChQQVRURVJOIChpbnNuKSkgIT0gVVNFCiAJ ICAgICAgJiYgYXNtX25vcGVyYW5kcyAoUEFUVEVSTiAoaW5zbikpIDwgMCkp KQogICAgIHsKQEAgLTEyMDcsNyArMTIwOCw3IEBAIGRvX2xvY2FsX2Nwcm9w IChydHggeCwgcnR4X2luc24gKmluc24pCiAKIAkgIGlmIChjcHJvcF9jb25z dGFudF9wICh0aGlzX3J0eCkpCiAJICAgIG5ld2Nuc3QgPSB0aGlzX3J0eDsK LQkgIGlmIChSRUdfUCAodGhpc19ydHgpICYmIFJFR05PICh0aGlzX3J0eCkg Pj0gRklSU1RfUFNFVURPX1JFR0lTVEVSCisJICBpZiAoY3Byb3BfcmVnX3Ag KHRoaXNfcnR4KQogCSAgICAgIC8qIERvbid0IGNvcHkgcHJvcGFnYXRlIGlm IGl0IGhhcyBhdHRhY2hlZCBSRUdfRVFVSVYgbm90ZS4KIAkJIEF0IHRoaXMg cG9pbnQgdGhpcyBvbmx5IGZ1bmN0aW9uIHBhcmFtZXRlcnMgc2hvdWxkIGhh dmUKIAkJIFJFR19FUVVJViBub3RlcyBhbmQgaWYgdGhlIGFyZ3VtZW50IHNs b3QgaXMgdXNlZCBzb21ld2hlcmUKQEAgLTEzMjgsOSArMTMyOSw4IEBAIGlt cGxpY2l0X3NldF9jb25kX3AgKGNvbnN0X3J0eCBjb25kKQogICBpZiAoR0VU X0NPREUgKGNvbmQpICE9IEVRICYmIEdFVF9DT0RFIChjb25kKSAhPSBORSkK ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgLyogVGhlIGZpcnN0IG9wZXJhbmQg b2YgQ09ORCBtdXN0IGJlIGEgcHNldWRvLXJlZy4gICovCi0gIGlmICghIFJF R19QIChYRVhQIChjb25kLCAwKSkKLSAgICAgIHx8IEhBUkRfUkVHSVNURVJf UCAoWEVYUCAoY29uZCwgMCkpKQorICAvKiBUaGUgZmlyc3Qgb3BlcmFuZCBv ZiBDT05EIG11c3QgYmUgYSByZWdpc3RlciB3ZSBjYW4gcHJvcGFnYXRlLiAg Ki8KKyAgaWYgKGNwcm9wX3JlZ19wIChYRVhQIChjb25kLCAwKSkpCiAgICAg cmV0dXJuIGZhbHNlOwogCiAgIC8qIFRoZSBzZWNvbmQgb3BlcmFuZCBvZiBD T05EIG11c3QgYmUgYSBzdWl0YWJsZSBjb25zdGFudC4gICovCg== --089e0112c84a9ac4380511b3a288--