From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11880 invoked by alias); 6 Aug 2012 06:55:38 -0000 Received: (qmail 11869 invoked by uid 22791); 6 Aug 2012 06:55:37 -0000 X-SWARE-Spam-Status: No, hits=-4.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_FC X-Spam-Check-By: sourceware.org Received: from mail-lb0-f175.google.com (HELO mail-lb0-f175.google.com) (209.85.217.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 06 Aug 2012 06:55:17 +0000 Received: by lban1 with SMTP id n1so1254528lba.20 for ; Sun, 05 Aug 2012 23:55:15 -0700 (PDT) Received: by 10.112.42.164 with SMTP id p4mr4133644lbl.54.1344236115486; Sun, 05 Aug 2012 23:55:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.112.45.72 with HTTP; Sun, 5 Aug 2012 23:54:54 -0700 (PDT) From: Steven Bosscher Date: Mon, 06 Aug 2012 06:55:00 -0000 Message-ID: Subject: [patch] speed up ifcvt:cond_move_convert_if_block To: GCC Patches Content-Type: multipart/mixed; boundary=90e6ba18129628683e04c6935c7a X-IsSubscribed: yes 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 X-SW-Source: 2012-08/txt/msg00270.txt.bz2 --90e6ba18129628683e04c6935c7a Content-Type: text/plain; charset=ISO-8859-1 Content-length: 206 Hello, In PR54146, ifcvt spends a lot of time just clearing memory. This patch changes the value maps to pointer-maps to fix this issue. Bootstrapped&tested on x86_64-unknown-linux-gnu. OK? Ciao! Steven --90e6ba18129628683e04c6935c7a Content-Type: application/octet-stream; name="PR54146_ifcvt.diff" Content-Disposition: attachment; filename="PR54146_ifcvt.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h5j7gikd0 Content-length: 12652 CVBSIHRyZWUtb3B0aW1pemF0aW9uLzU0MTQ2CgkqIGlmY3Z0LmM6IEluY2x1 ZGUgcG9pbnRlci1zZXQuaC4KCShjb25kX21vdmVfcHJvY2Vzc19pZl9ibG9j ayk6IENoYW5nZSB0eXBlIG9mIHRoZW5fcmVncyBhbmQKCWVsc2VfcmVncyBm cm9tIGFsbG9jYSdkIGFycmF5IHRvIHBvaW50ZXJfc2V0cy4KCShjaGVja19j b25kX21vdmVfYmxvY2spOiBVcGRhdGUgZm9yIHRoaXMgY2hhbmdlLgoJKGNv bmRfbW92ZV9jb252ZXJ0X2lmX2Jsb2NrKTogTGlrZXdpc2UuCgkqIE1ha2Vm aWxlLmluOiBGaXggZGVwZW5kZW5jaWVzIGZvciBpZmN2dC5vLgoKSW5kZXg6 IGlmY3Z0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaWZjdnQuYwko cmV2aXNpb24gMTkwMTUwKQorKysgaWZjdnQuYwkod29ya2luZyBjb3B5KQpA QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgInRyZWUtcGFzcy5oIgogI2lu Y2x1ZGUgImRmLmgiCiAjaW5jbHVkZSAidmVjLmgiCisjaW5jbHVkZSAicG9p bnRlci1zZXQuaCIKICNpbmNsdWRlICJ2ZWNwcmltLmgiCiAjaW5jbHVkZSAi ZGJnY250LmgiCiAKQEAgLTI2ODcsMTIgKzI2ODgsMTQgQEAgbm9jZV9wcm9j ZXNzX2lmX2Jsb2NrIChzdHJ1Y3Qgbm9jZV9pZl9pbgogCiAvKiBDaGVjayB3 aGV0aGVyIGEgYmxvY2sgaXMgc3VpdGFibGUgZm9yIGNvbmRpdGlvbmFsIG1v dmUgY29udmVyc2lvbi4KICAgIEV2ZXJ5IGluc24gbXVzdCBiZSBhIHNpbXBs ZSBzZXQgb2YgYSByZWdpc3RlciB0byBhIGNvbnN0YW50IG9yIGEKLSAgIHJl Z2lzdGVyLiAgRm9yIGVhY2ggYXNzaWdubWVudCwgc3RvcmUgdGhlIHZhbHVl IGluIHRoZSBhcnJheSBWQUxTLAotICAgaW5kZXhlZCBieSByZWdpc3RlciBu dW1iZXIsIHRoZW4gc3RvcmUgdGhlIHJlZ2lzdGVyIG51bWJlciBpbgotICAg UkVHUy4gIENPTkQgaXMgdGhlIGNvbmRpdGlvbiB3ZSB3aWxsIHRlc3QuICAq LworICAgcmVnaXN0ZXIuICBGb3IgZWFjaCBhc3NpZ25tZW50LCBzdG9yZSB0 aGUgdmFsdWUgaW4gdGhlIHBvaW50ZXIgbWFwCisgICBWQUxTLCBrZXllZCBp bmRleGVkIGJ5IHJlZ2lzdGVyIHBvaW50ZXIsIHRoZW4gc3RvcmUgdGhlIHJl Z2lzdGVyCisgICBwb2ludGVyIGluIFJFR1MuICBDT05EIGlzIHRoZSBjb25k aXRpb24gd2Ugd2lsbCB0ZXN0LiAgKi8KIAogc3RhdGljIGludAotY2hlY2tf Y29uZF9tb3ZlX2Jsb2NrIChiYXNpY19ibG9jayBiYiwgcnR4ICp2YWxzLCBW RUMgKGludCwgaGVhcCkgKipyZWdzLAorY2hlY2tfY29uZF9tb3ZlX2Jsb2Nr IChiYXNpY19ibG9jayBiYiwKKwkJICAgICAgIHN0cnVjdCBwb2ludGVyX21h cF90ICp2YWxzLAorCQkgICAgICAgVkVDIChydHgsIGhlYXApICoqcmVncywK IAkJICAgICAgIHJ0eCBjb25kKQogewogICBydHggaW5zbjsKQEAgLTI3MDYs NiArMjcwOSw3IEBAIGNoZWNrX2NvbmRfbW92ZV9ibG9jayAoYmFzaWNfYmxv Y2sgYmIsIHIKICAgRk9SX0JCX0lOU05TIChiYiwgaW5zbikKICAgICB7CiAg ICAgICBydHggc2V0LCBkZXN0LCBzcmM7CisgICAgICB2b2lkICoqc2xvdDsK IAogICAgICAgaWYgKCFOT05ERUJVR19JTlNOX1AgKGluc24pIHx8IEpVTVBf UCAoaW5zbikpCiAJY29udGludWU7CkBAIC0yNzMyLDE0ICsyNzM2LDE0IEBA IGNoZWNrX2NvbmRfbW92ZV9ibG9jayAoYmFzaWNfYmxvY2sgYmIsIHIKICAg ICAgIC8qIERvbid0IHRyeSB0byBoYW5kbGUgdGhpcyBpZiB0aGUgc291cmNl IHJlZ2lzdGVyIHdhcwogCSBtb2RpZmllZCBlYXJsaWVyIGluIHRoZSBibG9j ay4gICovCiAgICAgICBpZiAoKFJFR19QIChzcmMpCi0JICAgJiYgdmFsc1tS RUdOTyAoc3JjKV0gIT0gTlVMTCkKKwkgICAmJiBwb2ludGVyX21hcF9jb250 YWlucyAodmFscywgc3JjKSkKIAkgIHx8IChHRVRfQ09ERSAoc3JjKSA9PSBT VUJSRUcgJiYgUkVHX1AgKFNVQlJFR19SRUcgKHNyYykpCi0JICAgICAgJiYg dmFsc1tSRUdOTyAoU1VCUkVHX1JFRyAoc3JjKSldICE9IE5VTEwpKQorCSAg ICAgICYmIHBvaW50ZXJfbWFwX2NvbnRhaW5zICh2YWxzLCBTVUJSRUdfUkVH IChzcmMpKSkpCiAJcmV0dXJuIEZBTFNFOwogCiAgICAgICAvKiBEb24ndCB0 cnkgdG8gaGFuZGxlIHRoaXMgaWYgdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVy IHdhcwogCSBtb2RpZmllZCBlYXJsaWVyIGluIHRoZSBibG9jay4gICovCi0g ICAgICBpZiAodmFsc1tSRUdOTyAoZGVzdCldICE9IE5VTEwpCisgICAgICBp ZiAocG9pbnRlcl9tYXBfY29udGFpbnMgKHZhbHMsIGRlc3QpKQogCXJldHVy biBGQUxTRTsKIAogICAgICAgLyogRG9uJ3QgdHJ5IHRvIGhhbmRsZSB0aGlz IGlmIHRoZSBjb25kaXRpb24gdXNlcyB0aGUKQEAgLTI3NTMsMTcgKzI3NTcs MTggQEAgY2hlY2tfY29uZF9tb3ZlX2Jsb2NrIChiYXNpY19ibG9jayBiYiwg cgogCSAgJiYgbW9kaWZpZWRfYmV0d2Vlbl9wIChzcmMsIGluc24sIE5FWFRf SU5TTiAoQkJfRU5EIChiYikpKSkKIAlyZXR1cm4gRkFMU0U7CiAKLSAgICAg IHZhbHNbUkVHTk8gKGRlc3QpXSA9IHNyYzsKKyAgICAgIHNsb3QgPSBwb2lu dGVyX21hcF9pbnNlcnQgKHZhbHMsICh2b2lkICopIGRlc3QpOworICAgICAg KnNsb3QgPSAodm9pZCAqKSBzcmM7CiAKLSAgICAgIFZFQ19zYWZlX3B1c2gg KGludCwgaGVhcCwgKnJlZ3MsIFJFR05PIChkZXN0KSk7CisgICAgICBWRUNf c2FmZV9wdXNoIChydHgsIGhlYXAsICpyZWdzLCBkZXN0KTsKICAgICB9CiAK ICAgcmV0dXJuIFRSVUU7CiB9CiAKIC8qIEdpdmVuIGEgYmFzaWMgYmxvY2sg QkIgc3VpdGFibGUgZm9yIGNvbmRpdGlvbmFsIG1vdmUgY29udmVyc2lvbiwK LSAgIGEgY29uZGl0aW9uIENPTkQsIGFuZCBhcnJheXMgVEhFTl9WQUxTIGFu ZCBFTFNFX1ZBTFMgY29udGFpbmluZyB0aGUKLSAgIHJlZ2lzdGVyIHZhbHVl cyBkZXBlbmRpbmcgb24gQ09ORCwgZW1pdCB0aGUgaW5zbnMgaW4gdGhlIGJs b2NrIGFzCisgICBhIGNvbmRpdGlvbiBDT05ELCBhbmQgcG9pbnRlciBtYXBz IFRIRU5fVkFMUyBhbmQgRUxTRV9WQUxTIGNvbnRhaW5pbmcKKyAgIHRoZSBy ZWdpc3RlciB2YWx1ZXMgZGVwZW5kaW5nIG9uIENPTkQsIGVtaXQgdGhlIGlu c25zIGluIHRoZSBibG9jayBhcwogICAgY29uZGl0aW9uYWwgbW92ZXMuICBJ ZiBFTFNFX0JMT0NLIGlzIHRydWUsIFRIRU5fQkIgd2FzIGFscmVhZHkKICAg IHByb2Nlc3NlZC4gIFRoZSBjYWxsZXIgaGFzIHN0YXJ0ZWQgYSBzZXF1ZW5j ZSBmb3IgdGhlIGNvbnZlcnNpb24uCiAgICBSZXR1cm4gdHJ1ZSBpZiBzdWNj ZXNzZnVsLCBmYWxzZSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4gICovCkBA IC0yNzcxLDcgKzI3NzYsOCBAQCBjaGVja19jb25kX21vdmVfYmxvY2sgKGJh c2ljX2Jsb2NrIGJiLCByCiBzdGF0aWMgYm9vbAogY29uZF9tb3ZlX2NvbnZl cnRfaWZfYmxvY2sgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm9wLAog CQkJICAgIGJhc2ljX2Jsb2NrIGJiLCBydHggY29uZCwKLQkJCSAgICBydHgg KnRoZW5fdmFscywgcnR4ICplbHNlX3ZhbHMsCisJCQkgICAgc3RydWN0IHBv aW50ZXJfbWFwX3QgKnRoZW5fdmFscywKKwkJCSAgICBzdHJ1Y3QgcG9pbnRl cl9tYXBfdCAqZWxzZV92YWxzLAogCQkJICAgIGJvb2wgZWxzZV9ibG9ja19w KQogewogICBlbnVtIHJ0eF9jb2RlIGNvZGU7CkBAIC0yNzg0LDcgKzI3OTAs NyBAQCBjb25kX21vdmVfY29udmVydF9pZl9ibG9jayAoc3RydWN0IG5vY2Vf CiAgIEZPUl9CQl9JTlNOUyAoYmIsIGluc24pCiAgICAgewogICAgICAgcnR4 IHNldCwgdGFyZ2V0LCBkZXN0LCB0LCBlOwotICAgICAgdW5zaWduZWQgaW50 IHJlZ25vOworICAgICAgdm9pZCAqKnRoZW5fc2xvdCwgKiplbHNlX3Nsb3Q7 CiAKICAgICAgIC8qID8/PyBNYXliZSBlbWl0IGNvbmRpdGlvbmFsIGRlYnVn IGluc24/ICAqLwogICAgICAgaWYgKCFOT05ERUJVR19JTlNOX1AgKGluc24p IHx8IEpVTVBfUCAoaW5zbikpCkBAIC0yNzkzLDEwICsyNzk5LDExIEBAIGNv bmRfbW92ZV9jb252ZXJ0X2lmX2Jsb2NrIChzdHJ1Y3Qgbm9jZV8KICAgICAg IGdjY19hc3NlcnQgKHNldCAmJiBSRUdfUCAoU0VUX0RFU1QgKHNldCkpKTsK IAogICAgICAgZGVzdCA9IFNFVF9ERVNUIChzZXQpOwotICAgICAgcmVnbm8g PSBSRUdOTyAoZGVzdCk7CiAKLSAgICAgIHQgPSB0aGVuX3ZhbHNbcmVnbm9d OwotICAgICAgZSA9IGVsc2VfdmFsc1tyZWdub107CisgICAgICB0aGVuX3Ns b3QgPSBwb2ludGVyX21hcF9jb250YWlucyAodGhlbl92YWxzLCBkZXN0KTsK KyAgICAgIGVsc2Vfc2xvdCA9IHBvaW50ZXJfbWFwX2NvbnRhaW5zIChlbHNl X3ZhbHMsIGRlc3QpOworICAgICAgdCA9IHRoZW5fc2xvdCA/IChydHgpICp0 aGVuX3Nsb3QgOiBOVUxMX1JUWDsKKyAgICAgIGUgPSBlbHNlX3Nsb3QgPyAo cnR4KSAqZWxzZV9zbG90IDogTlVMTF9SVFg7CiAKICAgICAgIGlmIChlbHNl X2Jsb2NrX3ApCiAJewpAQCAtMjg0MCwzMSArMjg0NywyNSBAQCBjb25kX21v dmVfcHJvY2Vzc19pZl9ibG9jayAoc3RydWN0IG5vY2VfCiAgIHJ0eCBqdW1w ID0gaWZfaW5mby0+anVtcDsKICAgcnR4IGNvbmQgPSBpZl9pbmZvLT5jb25k OwogICBydHggc2VxLCBsb2NfaW5zbjsKLSAgaW50IG1heF9yZWcsIHNpemUs IGMsIHJlZzsKLSAgcnR4ICp0aGVuX3ZhbHM7Ci0gIHJ0eCAqZWxzZV92YWxz OwotICBWRUMgKGludCwgaGVhcCkgKnRoZW5fcmVncyA9IE5VTEw7Ci0gIFZF QyAoaW50LCBoZWFwKSAqZWxzZV9yZWdzID0gTlVMTDsKKyAgcnR4IHJlZzsK KyAgaW50IGM7CisgIHN0cnVjdCBwb2ludGVyX21hcF90ICp0aGVuX3ZhbHM7 CisgIHN0cnVjdCBwb2ludGVyX21hcF90ICplbHNlX3ZhbHM7CisgIFZFQyAo cnR4LCBoZWFwKSAqdGhlbl9yZWdzID0gTlVMTDsKKyAgVkVDIChydHgsIGhl YXApICplbHNlX3JlZ3MgPSBOVUxMOwogICB1bnNpZ25lZCBpbnQgaTsKKyAg aW50IHN1Y2Nlc3NfcCA9IEZBTFNFOwogCiAgIC8qIEJ1aWxkIGEgbWFwcGlu ZyBmb3IgZWFjaCBibG9jayB0byB0aGUgdmFsdWUgdXNlZCBmb3IgZWFjaAog ICAgICByZWdpc3Rlci4gICovCi0gIG1heF9yZWcgPSBtYXhfcmVnX251bSAo KTsKLSAgc2l6ZSA9IChtYXhfcmVnICsgMSkgKiBzaXplb2YgKHJ0eCk7Ci0g IHRoZW5fdmFscyA9IChydHggKikgYWxsb2NhIChzaXplKTsKLSAgZWxzZV92 YWxzID0gKHJ0eCAqKSBhbGxvY2EgKHNpemUpOwotICBtZW1zZXQgKHRoZW5f dmFscywgMCwgc2l6ZSk7Ci0gIG1lbXNldCAoZWxzZV92YWxzLCAwLCBzaXpl KTsKKyAgdGhlbl92YWxzID0gcG9pbnRlcl9tYXBfY3JlYXRlICgpOworICBl bHNlX3ZhbHMgPSBwb2ludGVyX21hcF9jcmVhdGUgKCk7CiAKICAgLyogTWFr ZSBzdXJlIHRoZSBibG9ja3MgYXJlIHN1aXRhYmxlLiAgKi8KICAgaWYgKCFj aGVja19jb25kX21vdmVfYmxvY2sgKHRoZW5fYmIsIHRoZW5fdmFscywgJnRo ZW5fcmVncywgY29uZCkKICAgICAgIHx8IChlbHNlX2JiCiAJICAmJiAhY2hl Y2tfY29uZF9tb3ZlX2Jsb2NrIChlbHNlX2JiLCBlbHNlX3ZhbHMsICZlbHNl X3JlZ3MsIGNvbmQpKSkKLSAgICB7Ci0gICAgICBWRUNfZnJlZSAoaW50LCBo ZWFwLCB0aGVuX3JlZ3MpOwotICAgICAgVkVDX2ZyZWUgKGludCwgaGVhcCwg ZWxzZV9yZWdzKTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9CisgICAg Z290byBkb25lOwogCiAgIC8qIE1ha2Ugc3VyZSB0aGUgYmxvY2tzIGNhbiBi ZSB1c2VkIHRvZ2V0aGVyLiAgSWYgdGhlIHNhbWUgcmVnaXN0ZXIKICAgICAg aXMgc2V0IGluIGJvdGggYmxvY2tzLCBhbmQgaXMgbm90IHNldCB0byBhIGNv bnN0YW50IGluIGJvdGgKQEAgLTI4NzMsNDEgKzI4NzQsMzggQEAgY29uZF9t b3ZlX3Byb2Nlc3NfaWZfYmxvY2sgKHN0cnVjdCBub2NlXwogICAgICBzb3Vy Y2UgcmVnaXN0ZXIgZG9lcyBub3QgY2hhbmdlIGFmdGVyIHRoZSBhc3NpZ25t ZW50LiAgQWxzbyBjb3VudAogICAgICB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVy cyBzZXQgaW4gb25seSBvbmUgb2YgdGhlIGJsb2Nrcy4gICovCiAgIGMgPSAw OwotICBGT1JfRUFDSF9WRUNfRUxUIChpbnQsIHRoZW5fcmVncywgaSwgcmVn KQorICBGT1JfRUFDSF9WRUNfRUxUIChydHgsIHRoZW5fcmVncywgaSwgcmVn KQogICAgIHsKLSAgICAgIGlmICghdGhlbl92YWxzW3JlZ10gJiYgIWVsc2Vf dmFsc1tyZWddKQotCWNvbnRpbnVlOworICAgICAgdm9pZCAqKnRoZW5fc2xv dCA9IHBvaW50ZXJfbWFwX2NvbnRhaW5zICh0aGVuX3ZhbHMsIHJlZyk7Cisg ICAgICB2b2lkICoqZWxzZV9zbG90ID0gcG9pbnRlcl9tYXBfY29udGFpbnMg KGVsc2VfdmFscywgcmVnKTsKIAotICAgICAgaWYgKCFlbHNlX3ZhbHNbcmVn XSkKKyAgICAgIGdjY19jaGVja2luZ19hc3NlcnQgKHRoZW5fc2xvdCk7Cisg ICAgICBpZiAoIWVsc2Vfc2xvdCkKIAkrK2M7CiAgICAgICBlbHNlCiAJewot CSAgaWYgKCFDT05TVEFOVF9QICh0aGVuX3ZhbHNbcmVnXSkKLQkgICAgICAm JiAhQ09OU1RBTlRfUCAoZWxzZV92YWxzW3JlZ10pCi0JICAgICAgJiYgIXJ0 eF9lcXVhbF9wICh0aGVuX3ZhbHNbcmVnXSwgZWxzZV92YWxzW3JlZ10pKQot CSAgICB7Ci0JICAgICAgVkVDX2ZyZWUgKGludCwgaGVhcCwgdGhlbl9yZWdz KTsKLQkgICAgICBWRUNfZnJlZSAoaW50LCBoZWFwLCBlbHNlX3JlZ3MpOwot CSAgICAgIHJldHVybiBGQUxTRTsKLQkgICAgfQorCSAgcnR4IHRoZW5fdmFs ID0gKHJ0eCkgKnRoZW5fc2xvdDsKKwkgIHJ0eCBlbHNlX3ZhbCA9IChydHgp ICplbHNlX3Nsb3Q7CisJICBpZiAoIUNPTlNUQU5UX1AgKHRoZW5fdmFsKSAm JiAhQ09OU1RBTlRfUCAoZWxzZV92YWwpCisJICAgICAgJiYgIXJ0eF9lcXVh bF9wICh0aGVuX3ZhbCwgZWxzZV92YWwpKQorCSAgICBnb3RvIGRvbmU7CiAJ fQogICAgIH0KIAogICAvKiBGaW5pc2ggb2ZmIGMgZm9yIE1BWF9DT05ESVRJ T05BTF9FWEVDVVRFLiAgKi8KLSAgRk9SX0VBQ0hfVkVDX0VMVCAoaW50LCBl bHNlX3JlZ3MsIGksIHJlZykKLSAgICBpZiAoIXRoZW5fdmFsc1tyZWddKQot ICAgICAgKytjOworICBGT1JfRUFDSF9WRUNfRUxUIChydHgsIGVsc2VfcmVn cywgaSwgcmVnKQorICAgIHsKKyAgICAgIGdjY19jaGVja2luZ19hc3NlcnQg KHBvaW50ZXJfbWFwX2NvbnRhaW5zIChlbHNlX3ZhbHMsIHJlZykpOworICAg ICAgaWYgKCFwb2ludGVyX21hcF9jb250YWlucyAodGhlbl92YWxzLCByZWcp KQorCSsrYzsKKyAgICB9CiAKICAgLyogTWFrZSBzdXJlIGl0IGlzIHJlYXNv bmFibGUgdG8gY29udmVydCB0aGlzIGJsb2NrLiAgV2hhdCBtYXR0ZXJzCiAg ICAgIGlzIHRoZSBudW1iZXIgb2YgYXNzaWdubWVudHMgY3VycmVudGx5IG1h ZGUgaW4gb25seSBvbmUgb2YgdGhlCiAgICAgIGJyYW5jaGVzLCBzaW5jZSBp ZiB3ZSBjb252ZXJ0IHdlIGFyZSBnb2luZyB0byBhbHdheXMgZXhlY3V0ZQog ICAgICB0aGVtLiAgKi8KICAgaWYgKGMgPiBNQVhfQ09ORElUSU9OQUxfRVhF Q1VURSkKLSAgICB7Ci0gICAgICBWRUNfZnJlZSAoaW50LCBoZWFwLCB0aGVu X3JlZ3MpOwotICAgICAgVkVDX2ZyZWUgKGludCwgaGVhcCwgZWxzZV9yZWdz KTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9CisgICAgZ290byBkb25l OwogCiAgIC8qIFRyeSB0byBlbWl0IHRoZSBjb25kaXRpb25hbCBtb3Zlcy4g IEZpcnN0IGRvIHRoZSB0aGVuIGJsb2NrLAogICAgICB0aGVuIGRvIGFueXRo aW5nIGxlZnQgaW4gdGhlIGVsc2UgYmxvY2tzLiAgKi8KQEAgLTI5MTksMTcg KzI5MTcsMTEgQEAgY29uZF9tb3ZlX3Byb2Nlc3NfaWZfYmxvY2sgKHN0cnVj dCBub2NlXwogCQkJCQkgIHRoZW5fdmFscywgZWxzZV92YWxzLCB0cnVlKSkp CiAgICAgewogICAgICAgZW5kX3NlcXVlbmNlICgpOwotICAgICAgVkVDX2Zy ZWUgKGludCwgaGVhcCwgdGhlbl9yZWdzKTsKLSAgICAgIFZFQ19mcmVlIChp bnQsIGhlYXAsIGVsc2VfcmVncyk7Ci0gICAgICByZXR1cm4gRkFMU0U7Cisg ICAgICBnb3RvIGRvbmU7CiAgICAgfQogICBzZXEgPSBlbmRfaWZjdnRfc2Vx dWVuY2UgKGlmX2luZm8pOwogICBpZiAoIXNlcSkKLSAgICB7Ci0gICAgICBW RUNfZnJlZSAoaW50LCBoZWFwLCB0aGVuX3JlZ3MpOwotICAgICAgVkVDX2Zy ZWUgKGludCwgaGVhcCwgZWxzZV9yZWdzKTsKLSAgICAgIHJldHVybiBGQUxT RTsKLSAgICB9CisgICAgZ290byBkb25lOwogCiAgIGxvY19pbnNuID0gZmly c3RfYWN0aXZlX2luc24gKHRoZW5fYmIpOwogICBpZiAoIWxvY19pbnNuKQpA QCAtMjk2MCw5ICsyOTUyLDE0IEBAIGNvbmRfbW92ZV9wcm9jZXNzX2lmX2Js b2NrIChzdHJ1Y3Qgbm9jZV8KIAogICBudW1fdXBkYXRlZF9pZl9ibG9ja3Mr KzsKIAotICBWRUNfZnJlZSAoaW50LCBoZWFwLCB0aGVuX3JlZ3MpOwotICBW RUNfZnJlZSAoaW50LCBoZWFwLCBlbHNlX3JlZ3MpOwotICByZXR1cm4gVFJV RTsKKyAgc3VjY2Vzc19wID0gVFJVRTsKKworZG9uZToKKyAgcG9pbnRlcl9t YXBfZGVzdHJveSAodGhlbl92YWxzKTsKKyAgcG9pbnRlcl9tYXBfZGVzdHJv eSAoZWxzZV92YWxzKTsKKyAgVkVDX2ZyZWUgKHJ0eCwgaGVhcCwgdGhlbl9y ZWdzKTsKKyAgVkVDX2ZyZWUgKHJ0eCwgaGVhcCwgZWxzZV9yZWdzKTsKKyAg cmV0dXJuIHN1Y2Nlc3NfcDsKIH0KIAogDApJbmRleDogTWFrZWZpbGUuaW4K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gTWFrZWZpbGUuaW4JKHJldmlz aW9uIDE5MDE1MCkKKysrIE1ha2VmaWxlLmluCSh3b3JraW5nIGNvcHkpCkBA IC0zMzUwLDcgKzMzNTAsNyBAQCByZWdyZW5hbWUubyA6IHJlZ3JlbmFtZS5j ICQoQ09ORklHX0gpICQoCiBpZmN2dC5vIDogaWZjdnQuYyAkKENPTkZJR19I KSAkKFNZU1RFTV9IKSBjb3JldHlwZXMuaCAkKFRNX0gpICQoUlRMX0gpIFwK ICAgICQoUkVHU19IKSAkKERJQUdOT1NUSUNfQ09SRV9IKSAkKEZMQUdTX0gp IGluc24tY29uZmlnLmggJChGVU5DVElPTl9IKSAkKFJFQ09HX0gpIFwKICAg ICQoVEFSR0VUX0gpICQoQkFTSUNfQkxPQ0tfSCkgJChFWFBSX0gpIG91dHB1 dC5oICQoRVhDRVBUX0gpICQoVE1fUF9IKSBcCi0gICAkKE9QVEFCU19IKSAk KENGR0xPT1BfSCkgaGFyZC1yZWctc2V0LmggXAorICAgJChPUFRBQlNfSCkg JChDRkdMT09QX0gpIGhhcmQtcmVnLXNldC5oIHBvaW50ZXItc2V0LmggXAog ICAgJChUUkVFX1BBU1NfSCkgJChERl9IKSAkKERCR0NOVF9IKQogcGFyYW1z Lm8gOiBwYXJhbXMuYyAkKENPTkZJR19IKSAkKFNZU1RFTV9IKSBjb3JldHlw ZXMuaCAkKENPTU1PTl9UQVJHRVRfSCkgXAogICAgJChQQVJBTVNfSCkgJChE SUFHTk9TVElDX0NPUkVfSCkK --90e6ba18129628683e04c6935c7a--