From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 8E9BF3889E00 for ; Fri, 25 Nov 2022 02:13:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8E9BF3889E00 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.96,192,1665475200"; d="scan'208,223";a="88082179" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 24 Nov 2022 18:13:41 -0800 IronPort-SDR: mbUuuSCeNOywvIXxPESDTHQNVxFwhgdu/szzE4oxHJRHwYcPwvcVckCGBhy5yJpUja1jfP1EzW Kw6+9V6bHZpAAPaHR9J193xv+0KCWG1T2hpcaagF9K/BbBD6ASNo1EgxFO/PUKF6ZBI8zumfTl /hQ0gSsGB2cw54jmfNqtqfgyMprSk3xBfgcMBL2EGfKZO0FTzFamOlVV9SJmL/VYut/ZmZ+DId u+S2c1lAi6XUcTd+bHTo1KQjY9Oq9GGVdkxc4FoeUesGOLl2EqGrPM4mI012QB7eDVApbsnIDF t1o= Content-Type: multipart/mixed; boundary="------------puP2Daul0IRKWKkeAmS9k3mY" Message-ID: Date: Thu, 24 Nov 2022 19:13:38 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Content-Language: en-US To: "gcc-patches@gcc.gnu.org" CC: Jakub Jelinek From: Sandra Loosemore Subject: [PATCH] [OpenMP] GC unused SIMD clones X-ClientProxiedBy: svr-orw-mbx-14.mgc.mentorg.com (147.34.90.214) To svr-orw-mbx-13.mgc.mentorg.com (147.34.90.213) X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,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: --------------puP2Daul0IRKWKkeAmS9k3mY Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit This patch is a followup to my not-yet-reviewed patch [PATCH v4] OpenMP: Generate SIMD clones for functions with "declare target" https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606218.html In comments on a previous iteration of that patch, I was asked to do something to delete unused SIMD clones to avoid code bloat; this is it. I've implemented something like a simple mark-and-sweep algorithm. Clones that are used are marked at the point where the call is generated in the vectorizer. The loop that iterates over functions to apply the passes after IPA is modified to defer processing of unmarked clones, and anything left over is deleted. OK to commit this along with the above-linked patch? -Sandra --------------puP2Daul0IRKWKkeAmS9k3mY Content-Type: text/x-patch; charset="UTF-8"; name="gc-unused-clones.patch" Content-Disposition: attachment; filename="gc-unused-clones.patch" Content-Transfer-Encoding: base64 RnJvbSBiZmZmY2VhOTI2ZDRkZmI2Mjc1MzQ2MjM3YzYxOTIyYTk1YzllNzE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTYW5kcmEgTG9vc2Vtb3JlIDxzYW5kcmFAY29kZXNv dXJjZXJ5LmNvbT4KRGF0ZTogV2VkLCAyMyBOb3YgMjAyMiAyMzoxNDozMSArMDAwMApTdWJq ZWN0OiBbUEFUQ0hdIFtPcGVuTVBdIEdDIHVudXNlZCBTSU1EIGNsb25lcwoKU0lNRCBjbG9u ZXMgYXJlIGNyZWF0ZWQgZHVyaW5nIHRoZSBJUEEgcGhhc2Ugd2hlbiBpdCBpcyBub3Qga25v d24gd2hldGhlcgpvciBub3QgdGhlIHZlY3Rvcml6ZXIgY2FuIHVzZSB0aGVtLiAgQ2xvbmVz IGZvciBmdW5jdGlvbnMgd2l0aCBleHRlcm5hbApsaW5rYWdlIGFyZSBwYXJ0IG9mIHRoZSBB QkksIGJ1dCBsb2NhbCBjbG9uZXMgY2FuIGJlIEdDJ2VkIGlmIG5vIGNhbGxzIGFyZQpmb3Vu ZCBpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBhZnRlciB2ZWN0b3JpemF0aW9uLgoKZ2NjL0No YW5nZUxvZwoJKiBjZ3JhcGguaCAoc3RydWN0IGNncmFwaF9ub2RlKTogQWRkIGdjX2NhbmRp ZGF0ZSBiaXQsIG1vZGlmeQoJZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIGl0 LgoJKiBjZ3JhcGh1bml0LmNjIChleHBhbmRfYWxsX2Z1bmN0aW9ucyk6IFNhdmUgZ2NfY2Fu ZGlkYXRlIGZ1bmN0aW9ucwoJZm9yIGxhc3QgYW5kIGl0ZXJhdGUgdG8gaGFuZGxlIHJlY3Vy c2l2ZSBjYWxscy4gIERlbGV0ZSBsZWZ0b3ZlcgoJY2FuZGlkYXRlcyBhdCB0aGUgZW5kLgoJ KiBvbXAtc2ltZC1jbG9uZS5jYyAoc2ltZF9jbG9uZV9jcmVhdGUpOiBTZXQgZ2NfY2FuZGlk YXRlIGJpdAoJb24gbG9jYWwgY2xvbmVzLgoJKiB0cmVlLXZlY3Qtc3RtdHMuY2MgKHZlY3Rv cml6YWJsZV9zaW1kX2Nsb25lX2NhbGwpOiBDbGVhcgoJZ2NfY2FuZGlkYXRlIGJpdCB3aGVu IGEgY2xvbmUgaXMgdXNlZC4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCgkqIHRlc3RzdWl0 ZS9nKysuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS0xLkM6IFR3ZWFrIHRvIHRlc3QKCXRo YXQgdGhlIHVudXNlZCBjbG9uZSBpcyBHQydlZC4KCSogdGVzdHN1aXRlL2djYy5kZy9nb21w L3RhcmdldC1zaW1kLWNsb25lLTEuYzogTGlrZXdpc2UuCi0tLQogZ2NjL2NncmFwaC5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKystCiBnY2MvY2dyYXBodW5p dC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0OSArKysrKysrKysrKysrKysr LS0tCiBnY2Mvb21wLXNpbWQtY2xvbmUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NSArKwogLi4uL2crKy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTEuQyAgICAgICAgIHwg IDcgKystCiAuLi4vZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMS5jICAgICAgICAg fCAgNiArKy0KIGdjYy90cmVlLXZlY3Qtc3RtdHMuY2MgICAgICAgICAgICAgICAgICAgICAg ICB8ICAzICsrCiA2IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDExIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jZ3JhcGguaCBiL2djYy9jZ3JhcGguaAppbmRl eCA0YmU2N2UzY2VhOS4uYjA2NTY3N2E4ZDAgMTAwNjQ0Ci0tLSBhL2djYy9jZ3JhcGguaAor KysgYi9nY2MvY2dyYXBoLmgKQEAgLTg5MSw3ICs4OTEsOCBAQCBzdHJ1Y3QgR1RZKCh0YWcg KCJTWU1UQUJfRlVOQ1RJT04iKSkpIGNncmFwaF9ub2RlIDogcHVibGljIHN5bXRhYl9ub2Rl CiAgICAgICB2ZXJzaW9uYWJsZSAoZmFsc2UpLCBjYW5fY2hhbmdlX3NpZ25hdHVyZSAoZmFs c2UpLAogICAgICAgcmVkZWZpbmVkX2V4dGVybl9pbmxpbmUgKGZhbHNlKSwgdG1fbWF5X2Vu dGVyX2lyciAoZmFsc2UpLAogICAgICAgaXBjcF9jbG9uZSAoZmFsc2UpLCBkZWNsYXJlX3Zh cmlhbnRfYWx0IChmYWxzZSksCi0gICAgICBjYWxsc19kZWNsYXJlX3ZhcmlhbnRfYWx0IChm YWxzZSksIG1fdWlkICh1aWQpLCBtX3N1bW1hcnlfaWQgKC0xKQorICAgICAgY2FsbHNfZGVj bGFyZV92YXJpYW50X2FsdCAoZmFsc2UpLCBnY19jYW5kaWRhdGUgKGZhbHNlKSwKKyAgICAg IG1fdWlkICh1aWQpLCBtX3N1bW1hcnlfaWQgKC0xKQogICB7fQogCiAgIC8qIFJlbW92ZSB0 aGUgbm9kZSBmcm9tIGNncmFwaCBhbmQgYWxsIGlubGluZSBjbG9uZXMgaW5saW5lZCBpbnRv IGl0LgpAQCAtMTQ5MCw2ICsxNDkxLDEwIEBAIHN0cnVjdCBHVFkoKHRhZyAoIlNZTVRBQl9G VU5DVElPTiIpKSkgY2dyYXBoX25vZGUgOiBwdWJsaWMgc3ltdGFiX25vZGUKICAgdW5zaWdu ZWQgZGVjbGFyZV92YXJpYW50X2FsdCA6IDE7CiAgIC8qIFRydWUgaWYgdGhlIGZ1bmN0aW9u IGNhbGxzIGRlY2xhcmVfdmFyaWFudF9hbHQgZnVuY3Rpb25zLiAgKi8KICAgdW5zaWduZWQg Y2FsbHNfZGVjbGFyZV92YXJpYW50X2FsdCA6IDE7CisgIC8qIFRydWUgaWYgdGhlIGZ1bmN0 aW9uIHNob3VsZCBvbmx5IGJlIGVtaXR0ZWQgaWYgaXQgaXMgdXNlZC4gIFRoaXMgZmxhZwor ICAgICBpcyBzZXQgZm9yIGxvY2FsIFNJTUQgY2xvbmVzIHdoZW4gdGhleSBhcmUgY3JlYXRl ZCBhbmQgY2xlYXJlZCBpZiB0aGUKKyAgICAgdmVjdG9yaXplciB1c2VzIHRoZW0uICAqLwor ICB1bnNpZ25lZCBnY19jYW5kaWRhdGUgOiAxOwogCiBwcml2YXRlOgogICAvKiBVbmlxdWUg aWQgb2YgdGhlIG5vZGUuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NncmFwaHVuaXQuY2MgYi9n Y2MvY2dyYXBodW5pdC5jYwppbmRleCBiMDVkNzkwYmY4ZC4uNTg3ZGFmNTY3NGUgMTAwNjQ0 Ci0tLSBhL2djYy9jZ3JhcGh1bml0LmNjCisrKyBiL2djYy9jZ3JhcGh1bml0LmNjCkBAIC0x OTk2LDE5ICsxOTk2LDUyIEBAIGV4cGFuZF9hbGxfZnVuY3Rpb25zICh2b2lkKQogCiAgIC8q IE91dHB1dCBmdW5jdGlvbnMgaW4gUlBPIHNvIGNhbGxlZXMgZ2V0IG9wdGltaXplZCBiZWZv cmUgY2FsbGVycy4gIFRoaXMKICAgICAgbWFrZXMgaXBhLXJhIGFuZCBvdGhlciBwcm9wYWdh dG9ycyB0byB3b3JrLgotICAgICBGSVhNRTogVGhpcyBpcyBmYXIgZnJvbSBvcHRpbWFsIGNv ZGUgbGF5b3V0LiAgKi8KLSAgZm9yIChpID0gbmV3X29yZGVyX3BvcyAtIDE7IGkgPj0gMDsg aS0tKQotICAgIHsKLSAgICAgIG5vZGUgPSBvcmRlcltpXTsKKyAgICAgRklYTUU6IFRoaXMg aXMgZmFyIGZyb20gb3B0aW1hbCBjb2RlIGxheW91dC4KKyAgICAgTWFrZSBtdWx0aXBsZSBw YXNzZXMgb3ZlciB0aGUgbGlzdCB0byBkZWZlciBwcm9jZXNzaW5nIG9mIGdjCisgICAgIGNh bmRpZGF0ZXMgdW50aWwgYWxsIHBvdGVudGlhbCB1c2VzIGFyZSBzZWVuLiAgKi8KKyAgaW50 IGdjX2NhbmRpZGF0ZXMgPSAwOworICBpbnQgcHJldl9nY19jYW5kaWRhdGVzID0gMDsKIAot ICAgICAgaWYgKG5vZGUtPnByb2Nlc3MpCisgIHdoaWxlICgxKQorICAgIHsKKyAgICAgIGZv ciAoaSA9IG5ld19vcmRlcl9wb3MgLSAxOyBpID49IDA7IGktLSkKIAl7Ci0JICBleHBhbmRl ZF9mdW5jX2NvdW50Kys7Ci0JICBub2RlLT5wcm9jZXNzID0gMDsKLQkgIG5vZGUtPmV4cGFu ZCAoKTsKKwkgIG5vZGUgPSBvcmRlcltpXTsKKworCSAgaWYgKG5vZGUtPmdjX2NhbmRpZGF0 ZSkKKwkgICAgZ2NfY2FuZGlkYXRlcysrOworCSAgZWxzZSBpZiAobm9kZS0+cHJvY2VzcykK KwkgICAgeworCSAgICAgIGV4cGFuZGVkX2Z1bmNfY291bnQrKzsKKwkgICAgICBub2RlLT5w cm9jZXNzID0gMDsKKwkgICAgICBub2RlLT5leHBhbmQgKCk7CisJICAgIH0KIAl9CisgICAg ICBpZiAoIWdjX2NhbmRpZGF0ZXMgfHwgZ2NfY2FuZGlkYXRlcyA9PSBwcmV2X2djX2NhbmRp ZGF0ZXMpCisJYnJlYWs7CisgICAgICBwcmV2X2djX2NhbmRpZGF0ZXMgPSBnY19jYW5kaWRh dGVzOworICAgICAgZ2NfY2FuZGlkYXRlcyA9IDA7CiAgICAgfQogCisgIC8qIEZyZWUgYW55 IHVudXNlZCBnY19jYW5kaWRhdGUgZnVuY3Rpb25zLiAgKi8KKyAgaWYgKGdjX2NhbmRpZGF0 ZXMpCisgICAgZm9yIChpID0gbmV3X29yZGVyX3BvcyAtIDE7IGkgPj0gMDsgaS0tKQorICAg ICAgeworCW5vZGUgPSBvcmRlcltpXTsKKwlpZiAobm9kZS0+Z2NfY2FuZGlkYXRlKQorCSAg eworCSAgICBzdHJ1Y3QgZnVuY3Rpb24gKmZuID0gREVDTF9TVFJVQ1RfRlVOQ1RJT04gKG5v ZGUtPmRlY2wpOworCSAgICBpZiAoc3ltdGFiLT5kdW1wX2ZpbGUpCisJICAgICAgZnByaW50 ZiAoc3ltdGFiLT5kdW1wX2ZpbGUsCisJCSAgICAgICAiRGVsZXRpbmcgdW51c2VkIGZ1bmN0 aW9uICVzXG4iLAorCQkgICAgICAgSURFTlRJRklFUl9QT0lOVEVSIChERUNMX0FTU0VNQkxF Ul9OQU1FIChub2RlLT5kZWNsKSkpOworCSAgICBub2RlLT5wcm9jZXNzID0gZmFsc2U7CisJ ICAgIGZyZWVfZG9taW5hbmNlX2luZm8gKGZuLCBDRElfRE9NSU5BVE9SUyk7CisJICAgIGZy ZWVfZG9taW5hbmNlX2luZm8gKGZuLCBDRElfUE9TVF9ET01JTkFUT1JTKTsKKwkgICAgbm9k ZS0+cmVsZWFzZV9ib2R5IChmYWxzZSk7CisJICB9CisgICAgICB9CisKICAgaWYgKGR1bXBf ZmlsZSkKICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJFeHBhbmRlZCBmdW5jdGlvbnMgd2l0 aCB0aW1lIHByb2ZpbGUgKCVzKToldS8ldVxuIiwKIAkgICAgIG1haW5faW5wdXRfZmlsZW5h bWUsIHByb2ZpbGVkX2Z1bmNfY291bnQsIGV4cGFuZGVkX2Z1bmNfY291bnQpOwpkaWZmIC0t Z2l0IGEvZ2NjL29tcC1zaW1kLWNsb25lLmNjIGIvZ2NjL29tcC1zaW1kLWNsb25lLmNjCmlu ZGV4IDIxZDY5YWE4NzQ3Li5lYTJkNjhhMGRlZiAxMDA2NDQKLS0tIGEvZ2NjL29tcC1zaW1k LWNsb25lLmNjCisrKyBiL2djYy9vbXAtc2ltZC1jbG9uZS5jYwpAQCAtNzAyLDYgKzcwMiwx MSBAQCBzaW1kX2Nsb25lX2NyZWF0ZSAoc3RydWN0IGNncmFwaF9ub2RlICpvbGRfbm9kZSwg Ym9vbCBmb3JjZV9sb2NhbCkKIAk9IG9sZF9ub2RlLT5jYWxsc19kZWNsYXJlX3ZhcmlhbnRf YWx0OwogICAgIH0KIAorICAvKiBNYXJrIGNsb25lcyB3aXRoIGludGVybmFsIGxpbmthZ2Ug YXMgZ2MnYWJsZSwgc28gdGhleSB3aWxsIG5vdCBiZQorICAgICBlbWl0dGVkIHVubGVzcyB0 aGUgdmVjdG9yaXplciBjYW4gYWN0dWFsbHkgdXNlIHRoZW0uICAqLworICBpZiAoIVRSRUVf UFVCTElDIChuZXdfbm9kZS0+ZGVjbCkpCisgICAgbmV3X25vZGUtPmdjX2NhbmRpZGF0ZSA9 IHRydWU7CisKICAgcmV0dXJuIG5ld19ub2RlOwogfQogCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2crKy5kZy9nb21wL3RhcmdldC1zaW1kLWNsb25lLTEuQyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMS5DCmluZGV4IDEwYjVhYzM4ODEy Li5iOTY0NzM2NDJiYiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC90 YXJnZXQtc2ltZC1jbG9uZS0xLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC90 YXJnZXQtc2ltZC1jbG9uZS0xLkMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLW9wdGlvbnMg Ii1mb3Blbm1wIC1PMiIgfSAqLwotLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mb3Bl bm1wLXRhcmdldC1zaW1kLWNsb25lPWFueSAtZmR1bXAtaXBhLXNpbWRjbG9uZS1kZXRhaWxz IiB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZvcGVubXAtdGFyZ2V0LXNp bWQtY2xvbmU9YW55IC1mZHVtcC1pcGEtc2ltZGNsb25lLWRldGFpbHMgLWZkdW1wLWlwYS1j Z3JhcGgiIH0gKi8KIAogLyogVGVzdCB0aGF0IHNpbWQgY2xvbmVzIGFyZSBnZW5lcmF0ZWQg Zm9yIGZ1bmN0aW9ucyB3aXRoICJkZWNsYXJlIHRhcmdldCIuICAqLwogCkBAIC0yMywzICsy Myw4IEBAIHZvaWQgY2FsbGl0IChpbnQgKmEsIGludCAqYiwgaW50ICpjKQogCiAvKiB7IGRn LWZpbmFsIHsgc2Nhbi1pcGEtZHVtcCAiR2VuZXJhdGVkIGxvY2FsIGNsb25lIF9aR1YuKk4u Kl9fWjVhZGRpdGlpIiAic2ltZGNsb25lIiB7IHRhcmdldCB4ODZfNjQtKi0qIH0gfSB9ICov CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1pcGEtZHVtcCAiR2VuZXJhdGVkIGxvY2FsIGNsb25l IF9aR1YuKk0uKl9fWjVhZGRpdGlpIiAic2ltZGNsb25lIiB7IHRhcmdldCB4ODZfNjQtKi0q IH0gfSB9ICovCisKKy8qIE9ubHkgdGhlICJOIiBjbG9uZSBpcyB1c2VkLiAgVGhlIG90aGVy IG9uZSBzaG91bGQgYmUgR0MnZWQuICAqLworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1pcGEt ZHVtcCAiRGVsZXRpbmcgdW51c2VkIGZ1bmN0aW9uIF9aR1YuKk0uKl9fWjVhZGRpdGlpIiAi Y2dyYXBoIiB7IHRhcmdldCB4ODZfNjQtKi0qIH0gfSB9ICovCisKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvdGFyZ2V0LXNpbWQtY2xvbmUtMS5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvZ29tcC90YXJnZXQtc2ltZC1jbG9uZS0xLmMKaW5kZXggMzg4ZGMy YTk1NmMuLjBkNzRhYTk3MWY5IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9n b21wL3RhcmdldC1zaW1kLWNsb25lLTEuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9n b21wL3RhcmdldC1zaW1kLWNsb25lLTEuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctb3B0 aW9ucyAiLWZvcGVubXAgLU8yIiB9ICovCi0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAi LWZvcGVubXAtdGFyZ2V0LXNpbWQtY2xvbmU9YW55IC1mZHVtcC1pcGEtc2ltZGNsb25lLWRl dGFpbHMiIH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZm9wZW5tcC10YXJn ZXQtc2ltZC1jbG9uZT1hbnkgLWZkdW1wLWlwYS1zaW1kY2xvbmUtZGV0YWlscyAtZmR1bXAt aXBhLWNncmFwaCIgfSAqLwogCiAvKiBUZXN0IHRoYXQgc2ltZCBjbG9uZXMgYXJlIGdlbmVy YXRlZCBmb3IgZnVuY3Rpb25zIHdpdGggImRlY2xhcmUgdGFyZ2V0Ii4gICovCiAKQEAgLTIz LDMgKzIzLDcgQEAgdm9pZCBjYWxsaXQgKGludCAqYSwgaW50ICpiLCBpbnQgKmMpCiAKIC8q IHsgZGctZmluYWwgeyBzY2FuLWlwYS1kdW1wICJHZW5lcmF0ZWQgbG9jYWwgY2xvbmUgX1pH Vi4qTi4qX2FkZGl0IiAic2ltZGNsb25lIiB7IHRhcmdldCB4ODZfNjQtKi0qIH0gfSB9ICov CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1pcGEtZHVtcCAiR2VuZXJhdGVkIGxvY2FsIGNsb25l IF9aR1YuKk0uKl9hZGRpdCIgInNpbWRjbG9uZSIgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0g fSAqLworCisvKiBPbmx5IHRoZSAiTiIgY2xvbmUgaXMgdXNlZC4gIFRoZSBvdGhlciBvbmUg c2hvdWxkIGJlIEdDJ2VkLiAgKi8KKworLyogeyBkZy1maW5hbCB7IHNjYW4taXBhLWR1bXAg IkRlbGV0aW5nIHVudXNlZCBmdW5jdGlvbiBfWkdWLipNLipfYWRkaXQiICJjZ3JhcGgiIHsg dGFyZ2V0IHg4Nl82NC0qLSogfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qt c3RtdHMuY2MgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjCmluZGV4IGIzNWI5ODY4ODlkLi5h NTAxNTQ2OGQ5ZiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYworKysgYi9n Y2MvdHJlZS12ZWN0LXN0bXRzLmNjCkBAIC00NjIwLDYgKzQ2MjAsOSBAQCB2ZWN0b3JpemFi bGVfc2ltZF9jbG9uZV9jYWxsICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3Rt dF9pbmZvLAogICAgIH0KICAgdmFyZ3MucmVsZWFzZSAoKTsKIAorICAvKiBNYXJrIHRoZSBj bG9uZSBhcyBubyBsb25nZXIgYmVpbmcgYSBjYW5kaWRhdGUgZm9yIEdDLiAgKi8KKyAgYmVz dG4tPmdjX2NhbmRpZGF0ZSA9IGZhbHNlOworCiAgIC8qIFRoZSBjYWxsIGluIFNUTVQgbWln aHQgcHJldmVudCBpdCBmcm9tIGJlaW5nIHJlbW92ZWQgaW4gZGNlLgogICAgICBXZSBob3dl dmVyIGNhbm5vdCByZW1vdmUgaXQgaGVyZSwgZHVlIHRvIHRoZSB3YXkgdGhlIHNzYSBuYW1l CiAgICAgIGl0IGRlZmluZXMgaXMgbWFwcGVkIHRvIHRoZSBuZXcgZGVmaW5pdGlvbi4gIFNv IGp1c3QgcmVwbGFjZQotLSAKMi4zMS4xCgo= --------------puP2Daul0IRKWKkeAmS9k3mY--