From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by sourceware.org (Postfix) with ESMTPS id 3C8863858D20 for ; Mon, 12 Jun 2023 18:55:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3C8863858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-1b3db8f3d07so5843085ad.2 for ; Mon, 12 Jun 2023 11:55:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686596152; x=1689188152; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=lX67k5vUjZAH4McdRdqwrmEIkWc2Gh9qu9nddWfg+0s=; b=BI8IUZdvHs+5oATzpkcZBKFUsLVD1HjKhklVlcQz5beXsaKKvQQ43gxrSB1Nnzdj8K cF6lp8RexOEiu4NC8GxZGesZbQfjoXJJFSjH0cIXz2yINu7WJJvQWv9BWlRzxr4zg8i6 cCzKE85gc4zyBKxCm7IMq6olW5r6tiMVXLEIuH+5B1xMYYlE4OAEhJurQVpLlKzfPUBc Yh1MWTVk18lzZaHOT5aSxTQ6EaKzCqA8mJcpQZ2F0GhXA8eyvU8x2HxXs4JcIb38fRb2 /JcCN8StPXeL+tTMMnL8Zd5BIlZJfNmQt5tqrxT3FTgEur5JMBThcmhnuMyMAYcIkTzZ neKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686596152; x=1689188152; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lX67k5vUjZAH4McdRdqwrmEIkWc2Gh9qu9nddWfg+0s=; b=AmwGDOY3M635XxuOnRWYxGqYtIYOAPIi5bTo6dQmH2mlc6s0ldTY7MkGjnl2oLFJWb BrHM5A1HBlS65r+OU+FBTL0zGNKo/5vzqNj2E2JXOfMQSiLk3F62thcSFiRSN0dosEHc MRbrxYaDSQ4s7nyBt1mfhN2uM1A/dZTvwLq4IOD+jrK2xaCgWTkMKxXD4o31cF0CQQUW 45C0v6Nb3YNJczLmyWeoFYh3GHcBEzQZKpOyv48P6rOpYjUc/jfNu7u8xSUXOWrQiESl Ab2T2Qvr8vUcDwkyOI1aabswSySszKzhZd8Y8spVz/fZKLhXL7yvgOkpcqFqwOpszdtj obVQ== X-Gm-Message-State: AC+VfDyZJH5qbK1tpZ7M6SaDCWdDxVFBeXcD2EQMr/Yyp/z7p7UUtunw Mhld79AXJwIbLXJ2h1Dj+avP7n16rlU= X-Google-Smtp-Source: ACHHUZ4NlAehXrLhUdB3HH+zwXg5nx2dpJi6S/cmA5OAg8jIMRHILg9/DqcWCOjUYo/bdEgAUQH3qA== X-Received: by 2002:a17:90a:195a:b0:25b:be49:29d1 with SMTP id 26-20020a17090a195a00b0025bbe4929d1mr5266107pjh.27.1686596151390; Mon, 12 Jun 2023 11:55:51 -0700 (PDT) Received: from [172.31.0.109] ([136.36.130.248]) by smtp.gmail.com with ESMTPSA id 23-20020a17090a005700b002568073d6fbsm8431271pjb.13.2023.06.12.11.55.49 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Jun 2023 11:55:50 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------EiR60iyRjPISXW6hsiYwBAg0" Message-ID: <52aefdbf-130d-dcb9-63f1-1b451153ccba@gmail.com> Date: Mon, 12 Jun 2023 12:55:49 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Content-Language: en-US From: Jeff Law Subject: [committed] [PR rtl-optimization/101188] Fix reload_cse_move2add ignoring clobbers To: "gcc-patches@gcc.gnu.org" X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,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. --------------EiR60iyRjPISXW6hsiYwBAg0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit So as Georg-Johann discusses in the BZ, reload_cse_move2add can generate incorrect code when optimizing code with clobbers. Specifically in the case where we try to optimize a sequence of 4 operations down to 3 operations we can reset INSN to the next instruction and continue the loop. That skips the code to invalidate objects based on things like REG_INC nodes, stack pushes and most importantly clobbers attached to the current insn. This patch factors all of the invalidation code used by reload_cse_move2add into a new function and calls it at the appropriate time. Georg-Johann has confirmed this patch fixes his avr bug and I've had it in my tester over the weekend. It's bootstrapped and regression tested on aarch64, m68k, sh4, alpha and hppa. It's also regression tested successfully on a wide variety of other targets. Pushing to the trunk momentarily. Jeff --------------EiR60iyRjPISXW6hsiYwBAg0 Content-Type: text/plain; charset=UTF-8; name="P" Content-Disposition: attachment; filename="P" Content-Transfer-Encoding: base64 Y29tbWl0IGFlMTkzZjkwMDhlMDI2ODNlMjdmM2M4N2YzYjA2ZjM4ZTEwM2IxZDAKQXV0aG9y OiBKZWZmIExhdyA8amxhd0B2ZW50YW5hbWljcm8uY29tPgpEYXRlOiAgIE1vbiBKdW4gMTIg MTI6NTI6MTAgMjAyMyAtMDYwMAoKICAgIFtjb21taXR0ZWRdIFtQUiBydGwtb3B0aW1pemF0 aW9uLzEwMTE4OF0gRml4IHJlbG9hZF9jc2VfbW92ZTJhZGQgaWdub3JpbmcgY2xvYmJlcnMK ICAgIAogICAgU28gYXMgR2VvcmctSm9oYW5uIGRpc2N1c3NlcyBpbiB0aGUgQlosIHJlbG9h ZF9jc2VfbW92ZTJhZGQgY2FuIGdlbmVyYXRlCiAgICAgaW5jb3JyZWN0IGNvZGUgd2hlbiBv cHRpbWl6aW5nIGNvZGUgd2l0aCBjbG9iYmVycy4gIFNwZWNpZmljYWxseSBpbiB0aGUKICAg IGNhc2Ugd2hlcmUgd2UgdHJ5IHRvIG9wdGltaXplIGEgc2VxdWVuY2Ugb2YgNCBvcGVyYXRp b25zIGRvd24gdG8gMwogICAgb3BlcmF0aW9ucyB3ZSBjYW4gcmVzZXQgSU5TTiB0byB0aGUg bmV4dCBpbnN0cnVjdGlvbiBhbmQgY29udGludWUgdGhlIGxvb3AuCiAgICAKICAgIFRoYXQg c2tpcHMgdGhlIGNvZGUgdG8gaW52YWxpZGF0ZSBvYmplY3RzIGJhc2VkIG9uIHRoaW5ncyBs aWtlIFJFR19JTkMKICAgIG5vZGVzLCBzdGFjayBwdXNoZXMgYW5kIG1vc3QgaW1wb3J0YW50 bHkgY2xvYmJlcnMgYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnQKICAgIGluc24uCiAgICAKICAg IFRoaXMgcGF0Y2ggZmFjdG9ycyBhbGwgb2YgdGhlIGludmFsaWRhdGlvbiBjb2RlIHVzZWQg YnkgcmVsb2FkX2NzZV9tb3ZlMmFkZAogICAgaW50byBhIG5ldyBmdW5jdGlvbiBhbmQgY2Fs bHMgaXQgYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuCiAgICAKICAgIEdlb3JnLUpvaGFubiBo YXMgY29uZmlybWVkIHRoaXMgcGF0Y2ggZml4ZXMgaGlzIGF2ciBidWcgYW5kIEkndmUgaGFk IGl0IGluCiAgICBteSB0ZXN0ZXIgb3ZlciB0aGUgd2Vla2VuZC4gIEl0J3MgYm9vdHN0cmFw cGVkIGFuZCByZWdyZXNzaW9uIHRlc3RlZCBvbgogICAgYWFyY2g2NCwgbTY4aywgc2g0LCBh bHBoYSBhbmQgaHBwYS4gIEl0J3MgYWxzbyByZWdyZXNzaW9uIHRlc3RlZCBzdWNjZXNzZnVs bHkKICAgIG9uIGEgd2lkZSB2YXJpZXR5IG9mIG90aGVyIHRhcmdldHMuCiAgICAKICAgIGdj Yy8KICAgICAgICAgICAgUFIgcnRsLW9wdGltaXphdGlvbi8xMDExODgKICAgICAgICAgICAg KiBwb3N0cmVsb2FkLmNjIChyZWxvYWRfY3NlX21vdmUyYWRkX2ludmFsaWRhdGUpOiBOZXcg ZnVuY3Rpb24sCiAgICAgICAgICAgIGV4dHJhY3RlZCBmcm9tLi4uCiAgICAgICAgICAgIChy ZWxvYWRfY3NlX21vdmUyYWRkKTogQ2FsbCByZWxvYWRfY3NlX21vdmUyYWRkX2ludmFsaWRh dGUuCiAgICAKICAgIGdjYy90ZXN0c3VpdGUKICAgICAgICAgICAgUFIgcnRsLW9wdGltaXph dGlvbi8xMDExODgKICAgICAgICAgICAgKiBnY2MuYy10b3J0dXJlL2V4ZWN1dGUvcHIxMDEx ODguYzogTmV3IHRlc3QKCmRpZmYgLS1naXQgYS9nY2MvcG9zdHJlbG9hZC5jYyBiL2djYy9w b3N0cmVsb2FkLmNjCmluZGV4IDIwZTEzOGI0ZmE4Li5kNWYzNjcwNzFiYiAxMDA2NDQKLS0t IGEvZ2NjL3Bvc3RyZWxvYWQuY2MKKysrIGIvZ2NjL3Bvc3RyZWxvYWQuY2MKQEAgLTE4OTks NiArMTg5OSw3OSBAQCBtb3ZlMmFkZF91c2VfYWRkM19pbnNuIChzY2FsYXJfaW50X21vZGUg bW9kZSwgcnR4IHJlZywgcnR4IHN5bSwgcnR4IG9mZiwKICAgcmV0dXJuIGNoYW5nZWQ7CiB9 CiAKKy8qIFBlcmZvcm0gYW55IGludmFsaWRhdGlvbnMgbmVjZXNzYXJ5IGZvciBJTlNOLiAg Ki8KKworc3RhdGljIHZvaWQKK3JlbG9hZF9jc2VfbW92ZTJhZGRfaW52YWxpZGF0ZSAocnR4 X2luc24gKmluc24pCit7CisgIGZvciAocnR4IG5vdGUgPSBSRUdfTk9URVMgKGluc24pOyBu b3RlOyBub3RlID0gWEVYUCAobm90ZSwgMSkpCisgICAgeworICAgICAgaWYgKFJFR19OT1RF X0tJTkQgKG5vdGUpID09IFJFR19JTkMKKwkgICYmIFJFR19QIChYRVhQIChub3RlLCAwKSkp CisJeworCSAgLyogUmVzZXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgcmVnaXN0ZXIu ICAqLworCSAgaW50IHJlZ25vID0gUkVHTk8gKFhFWFAgKG5vdGUsIDApKTsKKwkgIGlmIChy ZWdubyA8IEZJUlNUX1BTRVVET19SRUdJU1RFUikKKwkgICAgeworCSAgICAgIG1vdmUyYWRk X3JlY29yZF9tb2RlIChYRVhQIChub3RlLCAwKSk7CisJICAgICAgcmVnX21vZGVbcmVnbm9d ID0gVk9JRG1vZGU7CisJICAgIH0KKwl9CisgICAgfQorCisgIC8qIFRoZXJlIGFyZSBubyBS RUdfSU5DIG5vdGVzIGZvciBTUCBhdXRvaW5jLiAgKi8KKyAgc3VicnR4X3Zhcl9pdGVyYXRv cjo6YXJyYXlfdHlwZSBhcnJheTsKKyAgRk9SX0VBQ0hfU1VCUlRYX1ZBUiAoaXRlciwgYXJy YXksIFBBVFRFUk4gKGluc24pLCBOT05DT05TVCkKKyAgICB7CisgICAgICBydHggbWVtID0g Kml0ZXI7CisgICAgICBpZiAobWVtCisJICAmJiBNRU1fUCAobWVtKQorCSAgJiYgR0VUX1JU WF9DTEFTUyAoR0VUX0NPREUgKFhFWFAgKG1lbSwgMCkpKSA9PSBSVFhfQVVUT0lOQykKKwl7 CisJICBpZiAoWEVYUCAoWEVYUCAobWVtLCAwKSwgMCkgPT0gc3RhY2tfcG9pbnRlcl9ydHgp CisJICAgIHJlZ19tb2RlW1NUQUNLX1BPSU5URVJfUkVHTlVNXSA9IFZPSURtb2RlOworCX0K KyAgICB9CisKKyAgbm90ZV9zdG9yZXMgKGluc24sIG1vdmUyYWRkX25vdGVfc3RvcmUsIGlu c24pOworCisgIC8qIElmIElOU04gaXMgYSBjb25kaXRpb25hbCBicmFuY2gsIHdlIHRyeSB0 byBleHRyYWN0IGFuCisgICAgIGltcGxpY2l0IHNldCBvdXQgb2YgaXQuICAqLworICBpZiAo YW55X2NvbmRqdW1wX3AgKGluc24pKQorICAgIHsKKyAgICAgIHJ0eCBjbmQgPSBmaXNfZ2V0 X2NvbmRpdGlvbiAoaW5zbik7CisKKyAgICAgIGlmIChjbmQgIT0gTlVMTF9SVFgKKwkgICYm IEdFVF9DT0RFIChjbmQpID09IE5FCisJICAmJiBSRUdfUCAoWEVYUCAoY25kLCAwKSkKKwkg ICYmICFyZWdfc2V0X3AgKFhFWFAgKGNuZCwgMCksIGluc24pCisJICAvKiBUaGUgZm9sbG93 aW5nIHR3byBjaGVja3MsIHdoaWNoIGFyZSBhbHNvIGluCisJICAgICBtb3ZlMmFkZF9ub3Rl X3N0b3JlLCBhcmUgaW50ZW5kZWQgdG8gcmVkdWNlIHRoZQorCSAgICAgbnVtYmVyIG9mIGNh bGxzIHRvIGdlbl9ydHhfU0VUIHRvIGF2b2lkIG1lbW9yeQorCSAgICAgYWxsb2NhdGlvbiBp ZiBwb3NzaWJsZS4gICovCisJICAmJiBTQ0FMQVJfSU5UX01PREVfUCAoR0VUX01PREUgKFhF WFAgKGNuZCwgMCkpKQorCSAgJiYgUkVHX05SRUdTIChYRVhQIChjbmQsIDApKSA9PSAxCisJ ICAmJiBDT05TVF9JTlRfUCAoWEVYUCAoY25kLCAxKSkpCisJeworCSAgcnR4IGltcGxpY2l0 X3NldCA9IGdlbl9ydHhfU0VUIChYRVhQIChjbmQsIDApLCBYRVhQIChjbmQsIDEpKTsKKwkg IG1vdmUyYWRkX25vdGVfc3RvcmUgKFNFVF9ERVNUIChpbXBsaWNpdF9zZXQpLCBpbXBsaWNp dF9zZXQsIGluc24pOworCX0KKyAgICB9CisKKyAgLyogSWYgdGhpcyBpcyBhIENBTExfSU5T TiwgYWxsIGNhbGwgdXNlZCByZWdpc3RlcnMgYXJlIHN0b3JlZCB3aXRoCisgICAgIHVua25v d24gdmFsdWVzLiAgKi8KKyAgaWYgKENBTExfUCAoaW5zbikpCisgICAgeworICAgICAgZnVu Y3Rpb25fYWJpIGNhbGxlZV9hYmkgPSBpbnNuX2NhbGxlZV9hYmkgKGluc24pOworICAgICAg Zm9yIChpbnQgaSA9IEZJUlNUX1BTRVVET19SRUdJU1RFUiAtIDE7IGkgPj0gMDsgaS0tKQor CWlmIChyZWdfbW9kZVtpXSAhPSBWT0lEbW9kZQorCSAgICAmJiByZWdfbW9kZVtpXSAhPSBC TEttb2RlCisJICAgICYmIGNhbGxlZV9hYmkuY2xvYmJlcnNfcmVnX3AgKHJlZ19tb2RlW2ld LCBpKSkKKwkgICAgLyogUmVzZXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgcmVnaXN0 ZXIuICAqLworCSAgcmVnX21vZGVbaV0gPSBWT0lEbW9kZTsKKyAgICB9Cit9CisKIC8qIENv bnZlcnQgbW92ZSBpbnNucyB3aXRoIGNvbnN0YW50IGlucHV0cyB0byBhZGRpdGlvbnMgaWYg dGhleSBhcmUgY2hlYXBlci4KICAgIFJldHVybiB0cnVlIGlmIGFueSBjaGFuZ2VzIHdlcmUg bWFkZS4gICovCiBzdGF0aWMgYm9vbApAQCAtMTkyMSw3ICsxOTk0LDcgQEAgcmVsb2FkX2Nz ZV9tb3ZlMmFkZCAocnR4X2luc24gKmZpcnN0KQogICBtb3ZlMmFkZF9sdWlkID0gMjsKICAg Zm9yIChpbnNuID0gZmlyc3Q7IGluc247IGluc24gPSBORVhUX0lOU04gKGluc24pLCBtb3Zl MmFkZF9sdWlkKyspCiAgICAgewotICAgICAgcnR4IHNldCwgbm90ZTsKKyAgICAgIHJ0eCBz ZXQ7CiAKICAgICAgIGlmIChMQUJFTF9QIChpbnNuKSkKIAl7CkBAIC0yMDQxLDYgKzIxMTQs MTIgQEAgcmVsb2FkX2NzZV9tb3ZlMmFkZCAocnR4X2luc24gKmZpcnN0KQogCQkJZGVsZXRl X2luc24gKGluc24pOwogCQkgICAgICBjaGFuZ2VkIHw9IHN1Y2Nlc3M7CiAJCSAgICAgIGlu c24gPSBuZXh0OworCQkgICAgICAvKiBNYWtlIHN1cmUgdG8gcGVyZm9ybSBhbnkgaW52YWxp ZGF0aW9ucyByZWxhdGVkIHRvCisJCQkgTkVYVC9JTlNOIHNpbmNlIHdlJ3JlIGdvaW5nIHRv IGJ5cGFzcyB0aGUgbm9ybWFsCisJCQkgZmxvdyB3aXRoIHRoZSBjb250aW51ZSBiZWxvdy4K KworCQkJIERvIHRoaXMgYmVmb3JlIHJlY29yZGluZyB0aGUgbmV3IG1vZGUvb2Zmc2V0LiAg Ki8KKwkJICAgICAgcmVsb2FkX2NzZV9tb3ZlMmFkZF9pbnZhbGlkYXRlIChpbnNuKTsKIAkJ ICAgICAgbW92ZTJhZGRfcmVjb3JkX21vZGUgKHJlZyk7CiAJCSAgICAgIHJlZ19vZmZzZXRb cmVnbm9dCiAJCQk9IHRydW5jX2ludF9mb3JfbW9kZSAoYWRkZWRfb2Zmc2V0ICsgYmFzZV9v ZmZzZXQsCkBAIC0yMDk0LDc0ICsyMTczLDcgQEAgcmVsb2FkX2NzZV9tb3ZlMmFkZCAocnR4 X2luc24gKmZpcnN0KQogCSAgICAgIGNvbnRpbnVlOwogCSAgICB9CiAJfQotCi0gICAgICBm b3IgKG5vdGUgPSBSRUdfTk9URVMgKGluc24pOyBub3RlOyBub3RlID0gWEVYUCAobm90ZSwg MSkpCi0JewotCSAgaWYgKFJFR19OT1RFX0tJTkQgKG5vdGUpID09IFJFR19JTkMKLQkgICAg ICAmJiBSRUdfUCAoWEVYUCAobm90ZSwgMCkpKQotCSAgICB7Ci0JICAgICAgLyogUmVzZXQg dGhlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgcmVnaXN0ZXIuICAqLwotCSAgICAgIGludCBy ZWdubyA9IFJFR05PIChYRVhQIChub3RlLCAwKSk7Ci0JICAgICAgaWYgKHJlZ25vIDwgRklS U1RfUFNFVURPX1JFR0lTVEVSKQotCQl7Ci0JCSAgbW92ZTJhZGRfcmVjb3JkX21vZGUgKFhF WFAgKG5vdGUsIDApKTsKLQkJICByZWdfbW9kZVtyZWdub10gPSBWT0lEbW9kZTsKLQkJfQot CSAgICB9Ci0JfQotCi0gICAgICAvKiBUaGVyZSBhcmUgbm8gUkVHX0lOQyBub3RlcyBmb3Ig U1AgYXV0b2luYy4gICovCi0gICAgICBzdWJydHhfdmFyX2l0ZXJhdG9yOjphcnJheV90eXBl IGFycmF5OwotICAgICAgRk9SX0VBQ0hfU1VCUlRYX1ZBUiAoaXRlciwgYXJyYXksIFBBVFRF Uk4gKGluc24pLCBOT05DT05TVCkKLQl7Ci0JICBydHggbWVtID0gKml0ZXI7Ci0JICBpZiAo bWVtCi0JICAgICAgJiYgTUVNX1AgKG1lbSkKLQkgICAgICAmJiBHRVRfUlRYX0NMQVNTIChH RVRfQ09ERSAoWEVYUCAobWVtLCAwKSkpID09IFJUWF9BVVRPSU5DKQotCSAgICB7Ci0JICAg ICAgaWYgKFhFWFAgKFhFWFAgKG1lbSwgMCksIDApID09IHN0YWNrX3BvaW50ZXJfcnR4KQot CQlyZWdfbW9kZVtTVEFDS19QT0lOVEVSX1JFR05VTV0gPSBWT0lEbW9kZTsKLQkgICAgfQot CX0KLQotICAgICAgbm90ZV9zdG9yZXMgKGluc24sIG1vdmUyYWRkX25vdGVfc3RvcmUsIGlu c24pOwotCi0gICAgICAvKiBJZiBJTlNOIGlzIGEgY29uZGl0aW9uYWwgYnJhbmNoLCB3ZSB0 cnkgdG8gZXh0cmFjdCBhbgotCSBpbXBsaWNpdCBzZXQgb3V0IG9mIGl0LiAgKi8KLSAgICAg IGlmIChhbnlfY29uZGp1bXBfcCAoaW5zbikpCi0JewotCSAgcnR4IGNuZCA9IGZpc19nZXRf Y29uZGl0aW9uIChpbnNuKTsKLQotCSAgaWYgKGNuZCAhPSBOVUxMX1JUWAotCSAgICAgICYm IEdFVF9DT0RFIChjbmQpID09IE5FCi0JICAgICAgJiYgUkVHX1AgKFhFWFAgKGNuZCwgMCkp Ci0JICAgICAgJiYgIXJlZ19zZXRfcCAoWEVYUCAoY25kLCAwKSwgaW5zbikKLQkgICAgICAv KiBUaGUgZm9sbG93aW5nIHR3byBjaGVja3MsIHdoaWNoIGFyZSBhbHNvIGluCi0JCSBtb3Zl MmFkZF9ub3RlX3N0b3JlLCBhcmUgaW50ZW5kZWQgdG8gcmVkdWNlIHRoZQotCQkgbnVtYmVy IG9mIGNhbGxzIHRvIGdlbl9ydHhfU0VUIHRvIGF2b2lkIG1lbW9yeQotCQkgYWxsb2NhdGlv biBpZiBwb3NzaWJsZS4gICovCi0JICAgICAgJiYgU0NBTEFSX0lOVF9NT0RFX1AgKEdFVF9N T0RFIChYRVhQIChjbmQsIDApKSkKLQkgICAgICAmJiBSRUdfTlJFR1MgKFhFWFAgKGNuZCwg MCkpID09IDEKLQkgICAgICAmJiBDT05TVF9JTlRfUCAoWEVYUCAoY25kLCAxKSkpCi0JICAg IHsKLQkgICAgICBydHggaW1wbGljaXRfc2V0ID0KLQkJZ2VuX3J0eF9TRVQgKFhFWFAgKGNu ZCwgMCksIFhFWFAgKGNuZCwgMSkpOwotCSAgICAgIG1vdmUyYWRkX25vdGVfc3RvcmUgKFNF VF9ERVNUIChpbXBsaWNpdF9zZXQpLCBpbXBsaWNpdF9zZXQsIGluc24pOwotCSAgICB9Ci0J fQotCi0gICAgICAvKiBJZiB0aGlzIGlzIGEgQ0FMTF9JTlNOLCBhbGwgY2FsbCB1c2VkIHJl Z2lzdGVycyBhcmUgc3RvcmVkIHdpdGgKLQkgdW5rbm93biB2YWx1ZXMuICAqLwotICAgICAg aWYgKENBTExfUCAoaW5zbikpCi0JewotCSAgZnVuY3Rpb25fYWJpIGNhbGxlZV9hYmkgPSBp bnNuX2NhbGxlZV9hYmkgKGluc24pOwotCSAgZm9yIChpID0gRklSU1RfUFNFVURPX1JFR0lT VEVSIC0gMTsgaSA+PSAwOyBpLS0pCi0JICAgIGlmIChyZWdfbW9kZVtpXSAhPSBWT0lEbW9k ZQotCQkmJiByZWdfbW9kZVtpXSAhPSBCTEttb2RlCi0JCSYmIGNhbGxlZV9hYmkuY2xvYmJl cnNfcmVnX3AgKHJlZ19tb2RlW2ldLCBpKSkKLQkgICAgICAvKiBSZXNldCB0aGUgaW5mb3Jt YXRpb24gYWJvdXQgdGhpcyByZWdpc3Rlci4gICovCi0JICAgICAgcmVnX21vZGVbaV0gPSBW T0lEbW9kZTsKLQl9CisgICAgICByZWxvYWRfY3NlX21vdmUyYWRkX2ludmFsaWRhdGUgKGlu c24pOwogICAgIH0KICAgcmV0dXJuIGNoYW5nZWQ7CiB9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjEwMTE4OC5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvcHIxMDExODguYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMWJkYjUwYjNkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjEwMTE4OC5jCkBAIC0wLDAg KzEsNjEgQEAKKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGluZGlyZWN0X2Nh bGxzIH0gKi8KK3R5cGVkZWYgX19VSU5UOF9UWVBFX18gdWludDhfdDsKK3R5cGVkZWYgX19V SU5UMTZfVFlQRV9fIHVpbnQxNl90OworCit0eXBlZGVmIHVpbnQ4X3QgKCpmbjEpKHZvaWQg KmEpOwordHlwZWRlZiB2b2lkICgqZm4yKSh2b2lkICphLCBpbnQgKmFyZyk7CisKK3N0cnVj dCBTCit7CisgICAgdWludDhfdCBidWZmZXJbNjRdOworICAgIHVpbnQxNl90IG47CisgICAg Zm4yIGYyOworICAgIHZvaWQgKmE7CisgICAgZm4xIGYxOworfTsKKwordm9sYXRpbGUgdWlu dDE2X3QgeDsKKwordm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18sX19ub2Nsb25l X18pKQorZm9vICh1aW50MTZfdCBuKQoreworICB4ID0gbjsKK30KKwordm9pZCBfX2F0dHJp YnV0ZV9fKChfX25vaW5saW5lX18sX19ub2Nsb25lX18pKQordGVzdGZuIChzdHJ1Y3QgUyAq c2VsZikKK3sKKyAgICBpbnQgYXJnOworCisgICAgZm9vIChzZWxmLT5uKTsKKyAgICBzZWxm LT5uKys7CisgICAgc2VsZi0+ZjIgKHNlbGYtPmEsICZhcmcpOworICAgIHNlbGYtPmJ1ZmZl clswXSA9IHNlbGYtPmYxIChzZWxmLT5hKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGNoYXIg bXlmbjJfY2FsbGVkID0gMDsKKworc3RhdGljIHZvaWQKK215Zm4yICh2b2lkICphLCBpbnQg KmFyZykKK3sKKyAgbXlmbjJfY2FsbGVkID0gMTsKK30KKworc3RhdGljIHVpbnQ4X3QKK215 Zm4xICh2b2lkICphKQoreworICByZXR1cm4gMDsKK30KKworaW50IG1haW4gKHZvaWQpCit7 CisgIHN0cnVjdCBTIHM7CisgIHMubiA9IDA7CisgIHMuZjIgPSBteWZuMjsKKyAgcy5mMSA9 IG15Zm4xOworICB0ZXN0Zm4gKCZzKTsKKyAgaWYgKG15Zm4yX2NhbGxlZCAhPSAxKQorICAg IF9fYnVpbHRpbl9hYm9ydCgpOworICByZXR1cm4gMDsKK30KKwo= --------------EiR60iyRjPISXW6hsiYwBAg0--