From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 71931 invoked by alias); 1 Mar 2017 22:06:37 -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 71895 invoked by uid 89); 1 Mar 2017 22:06:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-12.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy=hoped, 4811 X-HELO: mail-wm0-f51.google.com Received: from mail-wm0-f51.google.com (HELO mail-wm0-f51.google.com) (74.125.82.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 01 Mar 2017 22:06:32 +0000 Received: by mail-wm0-f51.google.com with SMTP id v186so121403763wmd.0 for ; Wed, 01 Mar 2017 14:06:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=JVijKe6XMt2quS2tcHF7j96DLFf6Fq/Hd38lSMkKJoE=; b=gepfJtk6mzjmwmc8qxaP8r5/pESI7+uTGrWk2rlfflGesgIjMlhMoIfhP4XceO/98y 02BxwWZ9NMrC15XuSHOY5G2UNkpcH5/5KxnZbC3dri2nUdmt2Q8Ge5b8O8D/lHD9gLKt zMqZEPrC1rLuaK3smLA6Ns80RpABefO0O6uduJyDkPhRWk2Y/guiVKy4HcfK2XSNC6Ur DZmde34Zah+QtohdddryBu7+OUaM0XQtw/ULaRJszFE5q9hAx0n2tx8LzJJXxMDZ5d6c px5hVksKur2r8lbL/hXtt9/CPp7JC93cQ3genEF8ttVADKXJ/DHVjnC2qMgpAhS0JNQe +kLQ== X-Gm-Message-State: AMke39lRfzHoTzzoOtrWM3FZG1tOGscOtHzyi0QPAlvlTDGLiIEXAnoX6dNvz0LzcPD0d875nzfTcVcEocoAcVYF X-Received: by 10.28.23.66 with SMTP id 63mr5347881wmx.46.1488405990388; Wed, 01 Mar 2017 14:06:30 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.145.68 with HTTP; Wed, 1 Mar 2017 14:06:29 -0800 (PST) From: Jim Wilson Date: Wed, 01 Mar 2017 22:06:00 -0000 Message-ID: Subject: [PATCH] handling address mode changes inside extract_bit_field To: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary=001a11468aa8573eea0549b2866a X-SW-Source: 2017-03/txt/msg00058.txt.bz2 --001a11468aa8573eea0549b2866a Content-Type: text/plain; charset=UTF-8 Content-length: 1296 This is a proposed patch for the bug 79794 which I just submitted. This isn't a regression, so this can wait for after the gcc 7 branch if necessary. The problem here is that a reg+offset MEM target is passed to extract_bit_field with a vector register source. On aarch64, we have an instruction for this, but it accepts a reg address only, so the address gets loaded into a reg inside extract_bit_field. We then return to expand_expr which does ! rtx_equal_p (temp, target) which fails because of the address mode change, so we end up copying target into a reg and then back to itself. expand_expr has a solution for this problem. There is an alt_rtl variable that can be set when temp is logically the same as target. This variable is currently not passed into extract_bit_field. This patch does that. There is an additional complication that the actual address load into a reg occurs inside maybe_expand_insn, and it doesn't seem reasonable to pass alt_reg into that. However, I can grab a bit from the expand_operand structure to indicate when an operand is the target, and then clear it if target is replaced with a reg. The resulting patch works, but ends up a bit more invasive than I hoped. The patch has passed a bootstrap and make check test on x86_64 and aarch64. Jim --001a11468aa8573eea0549b2866a Content-Type: text/x-patch; charset=US-ASCII; name="alt-rtl.patch" Content-Disposition: attachment; filename="alt-rtl.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_izrigneu0 Content-length: 13433 UHJvcG9zZWQgcGF0Y2ggZm9yIFJUTCBleHBhbmQgYnVnIGFmZmVjdGluZyBh YXJjaDY0IHZlY3RvciBjb2RlLgoKCVBSIG1pZGRsZS1lbmQvNzk3OTQKICAg IAkqIGV4cG1lZC5jIChleHRyYWN0X2JpdF9maWVsZF8xKTogQWRkIGFsdF9y dGwgYXJndW1lbnQuICBCZWZvcmUKCW1heWJlX2V4cGFuZF9pbnNuIGNhbGws IHNldCBvcHNbMF0udGFyZ2V0LiAgSWYgc3RpbGwgc2V0IGFmdGVyIGNhbGws CglzZXQgYWx0X3J0bC4gIEFkZCBleHRyYSBhcmcgdG8gcmVjdXJzaXZlIGNh bGxzLgoJKGV4dHJhY3RfYml0X2ZpZWxkKTogQWRkIGFsdF9ydGwgYXJndW1l bnQuICBQYXNzIHRvCglleHRyYWN0X2JpdF9maWVsZC4KCSogZXhwbWVkLmgg KGV4dHJhY3RfYml0X2ZpZWxkKTogRml4IHByb3RvdHlwZS4KCSogZXhwci5j IChlbWl0X2dyb3VwX2xvYWRfMSwgY29weV9ibGttb2RlX2Zyb21fcmVnKQoJ KGNvcHlfYmxrbW9kZV90b19yZWcsIHJlYWRfY29tcGxleF9wYXJ0LCBzdG9y ZV9maWVsZCk6IFBhc3MgZXh0cmEgTlVMTAoJdG8gZXh0cmFjdF9iaXRfZmll bGRfY2FsbHMuCgkoZXhwYW5kX2V4cHJfcmVhbF8xKTogUGFzcyBhbHRfcnRs IHRvIGV4cGFuZF9leHByX3JlYWwgaW5zdGVhZCBvZiAwLgoJUGFzcyBhbHRf cnRsIHRvIGV4dHJhY3RfYml0X2ZpZWxkIGNhbGxzLgoJKiBjYWxscy5jIChz dG9yZV91bmFsaWduZWRfYXJndW1lbnRzX2ludG9fcHN1ZWRvcykKCWxvYWRf cmVnaXN0ZXJfcGFyYW1ldGVycyk6IFBhc3MgZXh0cmEgTlVMTCB0byBleHRy YWN0X2JpdF9maWVsZCBjYWxscy4KCSogb3B0YWJzLmMgKG1heWJlX2xlZ2l0 aW1pemVfb3BlcmFuZCk6IENsZWFyIG9wLT50YXJnZXQgd2hlbiBjYWxsCgln ZW5fcmVnX3J0eC4KCSogb3B0YWJzLmggKHN0cnVjdCBleHBhbmRfb3BlcmFu ZCk6IEFkZCB0YXJnZXQgYml0ZmllbGQuCgpJbmRleDogZ2NjL2NhbGxzLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NhbGxzLmMJKHJldmlz aW9uIDI0NTc2NCkKKysrIGdjYy9jYWxscy5jCSh3b3JraW5nIGNvcHkpCkBA IC0xMTYxLDcgKzExNjEsNyBAQCBzdG9yZV91bmFsaWduZWRfYXJndW1lbnRz X2ludG9fcHNldWRvcyAoc3RydWN0IGFyZwogCiAJICAgIGFyZ3NbaV0uYWxp Z25lZF9yZWdzW2pdID0gcmVnOwogCSAgICB3b3JkID0gZXh0cmFjdF9iaXRf ZmllbGQgKHdvcmQsIGJpdHNpemUsIDAsIDEsIE5VTExfUlRYLAotCQkJCSAg ICAgIHdvcmRfbW9kZSwgd29yZF9tb2RlLCBmYWxzZSk7CisJCQkJICAgICAg d29yZF9tb2RlLCB3b3JkX21vZGUsIGZhbHNlLCBOVUxMKTsKIAogCSAgICAv KiBUaGVyZSBpcyBubyBuZWVkIHRvIHJlc3RyaWN0IHRoaXMgY29kZSB0byBs b2FkaW5nIGl0ZW1zCiAJICAgICAgIGluIFRZUEVfQUxJR04gc2l6ZWQgaHVu a3MuICBUaGUgYml0ZmllbGQgaW5zdHJ1Y3Rpb25zIGNhbgpAQCAtMjU1NCw3 ICsyNTU0LDggQEAgbG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzIChzdHJ1Y3Qg YXJnX2RhdGEgKmFyZ3MsIGkKIAkJICB1bnNpZ25lZCBpbnQgYml0b2ZmID0g KG5yZWdzIC0gMSkgKiBCSVRTX1BFUl9XT1JEOwogCQkgIHVuc2lnbmVkIGlu dCBiaXRzaXplID0gc2l6ZSAqIEJJVFNfUEVSX1VOSVQgLSBiaXRvZmY7CiAJ CSAgcnR4IHggPSBleHRyYWN0X2JpdF9maWVsZCAobWVtLCBiaXRzaXplLCBi aXRvZmYsIDEsIGRlc3QsCi0JCQkJCSAgICAgd29yZF9tb2RlLCB3b3JkX21v ZGUsIGZhbHNlKTsKKwkJCQkJICAgICB3b3JkX21vZGUsIHdvcmRfbW9kZSwg ZmFsc2UsCisJCQkJCSAgICAgTlVMTCk7CiAJCSAgaWYgKEJZVEVTX0JJR19F TkRJQU4pCiAJCSAgICB4ID0gZXhwYW5kX3NoaWZ0IChMU0hJRlRfRVhQUiwg d29yZF9tb2RlLCB4LAogCQkJCSAgICAgIEJJVFNfUEVSX1dPUkQgLSBiaXRz aXplLCBkZXN0LCAxKTsKSW5kZXg6IGdjYy9leHBtZWQuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBnY2MvZXhwbWVkLmMJKHJldmlzaW9uIDI0NTc2 NCkKKysrIGdjYy9leHBtZWQuYwkod29ya2luZyBjb3B5KQpAQCAtMTUyOCw3 ICsxNTI4LDcgQEAgc3RhdGljIHJ0eAogZXh0cmFjdF9iaXRfZmllbGRfMSAo cnR4IHN0cl9ydHgsIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgYml0c2l6ZSwK IAkJICAgICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIGJpdG51bSwgaW50IHVu c2lnbmVkcCwgcnR4IHRhcmdldCwKIAkJICAgICBtYWNoaW5lX21vZGUgbW9k ZSwgbWFjaGluZV9tb2RlIHRtb2RlLAotCQkgICAgIGJvb2wgcmV2ZXJzZSwg Ym9vbCBmYWxsYmFja19wKQorCQkgICAgIGJvb2wgcmV2ZXJzZSwgYm9vbCBm YWxsYmFja19wLCBydHggKmFsdF9ydGwpCiB7CiAgIHJ0eCBvcDAgPSBzdHJf cnR4OwogICBtYWNoaW5lX21vZGUgaW50X21vZGU7CkBAIC0xNjA0LDEwICsx NjA0LDEzIEBAIGV4dHJhY3RfYml0X2ZpZWxkXzEgKHJ0eCBzdHJfcnR4LCB1 bnNpZ25lZCBIT1NUX1dJCiAgICAgICB1bnNpZ25lZCBIT1NUX1dJREVfSU5U IHBvcyA9IGJpdG51bSAvIEdFVF9NT0RFX0JJVFNJWkUgKGlubmVybW9kZSk7 CiAKICAgICAgIGNyZWF0ZV9vdXRwdXRfb3BlcmFuZCAoJm9wc1swXSwgdGFy Z2V0LCBpbm5lcm1vZGUpOworICAgICAgb3BzWzBdLnRhcmdldCA9IDE7CiAg ICAgICBjcmVhdGVfaW5wdXRfb3BlcmFuZCAoJm9wc1sxXSwgb3AwLCBvdXRl cm1vZGUpOwogICAgICAgY3JlYXRlX2ludGVnZXJfb3BlcmFuZCAoJm9wc1sy XSwgcG9zKTsKICAgICAgIGlmIChtYXliZV9leHBhbmRfaW5zbiAoaWNvZGUs IDMsIG9wcykpCiAJeworCSAgaWYgKGFsdF9ydGwgJiYgb3BzWzBdLnRhcmdl dCkKKwkgICAgKmFsdF9ydGwgPSB0YXJnZXQ7CiAJICB0YXJnZXQgPSBvcHNb MF0udmFsdWU7CiAgICAgICAJICBpZiAoR0VUX01PREUgKHRhcmdldCkgIT0g bW9kZSkKIAkgICAgcmV0dXJuIGdlbl9sb3dwYXJ0ICh0bW9kZSwgdGFyZ2V0 KTsKQEAgLTE3MjksNyArMTczMiw3IEBAIGV4dHJhY3RfYml0X2ZpZWxkXzEg KHJ0eCBzdHJfcnR4LCB1bnNpZ25lZCBIT1NUX1dJCiAJICAgID0gZXh0cmFj dF9iaXRfZmllbGRfMSAob3AwLCBNSU4gKEJJVFNfUEVSX1dPUkQsCiAJCQkJ CSAgICAgYml0c2l6ZSAtIGkgKiBCSVRTX1BFUl9XT1JEKSwKIAkJCQkgICBi aXRudW0gKyBiaXRfb2Zmc2V0LCAxLCB0YXJnZXRfcGFydCwKLQkJCQkgICBt b2RlLCB3b3JkX21vZGUsIHJldmVyc2UsIGZhbGxiYWNrX3ApOworCQkJCSAg IG1vZGUsIHdvcmRfbW9kZSwgcmV2ZXJzZSwgZmFsbGJhY2tfcCwgTlVMTCk7 CiAKIAkgIGdjY19hc3NlcnQgKHRhcmdldF9wYXJ0KTsKIAkgIGlmICghcmVz dWx0X3BhcnQpCkBAIC0xODMyLDcgKzE4MzUsNyBAQCBleHRyYWN0X2JpdF9m aWVsZF8xIChydHggc3RyX3J0eCwgdW5zaWduZWQgSE9TVF9XSQogCSAgeG9w MCA9IGNvcHlfdG9fcmVnICh4b3AwKTsKIAkgIHJ0eCByZXN1bHQgPSBleHRy YWN0X2JpdF9maWVsZF8xICh4b3AwLCBiaXRzaXplLCBiaXRwb3MsCiAJCQkJ CSAgICB1bnNpZ25lZHAsIHRhcmdldCwKLQkJCQkJICAgIG1vZGUsIHRtb2Rl LCByZXZlcnNlLCBmYWxzZSk7CisJCQkJCSAgICBtb2RlLCB0bW9kZSwgcmV2 ZXJzZSwgZmFsc2UsIE5VTEwpOwogCSAgaWYgKHJlc3VsdCkKIAkgICAgcmV0 dXJuIHJlc3VsdDsKIAkgIGRlbGV0ZV9pbnNuc19zaW5jZSAobGFzdCk7CkBA IC0xODg4LDcgKzE4OTEsOCBAQCBleHRyYWN0X2JpdF9maWVsZF8xIChydHgg c3RyX3J0eCwgdW5zaWduZWQgSE9TVF9XSQogcnR4CiBleHRyYWN0X2JpdF9m aWVsZCAocnR4IHN0cl9ydHgsIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgYml0 c2l6ZSwKIAkJICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBiaXRudW0sIGlu dCB1bnNpZ25lZHAsIHJ0eCB0YXJnZXQsCi0JCSAgIG1hY2hpbmVfbW9kZSBt b2RlLCBtYWNoaW5lX21vZGUgdG1vZGUsIGJvb2wgcmV2ZXJzZSkKKwkJICAg bWFjaGluZV9tb2RlIG1vZGUsIG1hY2hpbmVfbW9kZSB0bW9kZSwgYm9vbCBy ZXZlcnNlLAorCQkgICBydHggKmFsdF9ydGwpCiB7CiAgIG1hY2hpbmVfbW9k ZSBtb2RlMTsKIApAQCAtMTkyMyw3ICsxOTI3LDcgQEAgZXh0cmFjdF9iaXRf ZmllbGQgKHJ0eCBzdHJfcnR4LCB1bnNpZ25lZCBIT1NUX1dJREUKICAgICB9 CiAKICAgcmV0dXJuIGV4dHJhY3RfYml0X2ZpZWxkXzEgKHN0cl9ydHgsIGJp dHNpemUsIGJpdG51bSwgdW5zaWduZWRwLAotCQkJICAgICAgdGFyZ2V0LCBt b2RlLCB0bW9kZSwgcmV2ZXJzZSwgdHJ1ZSk7CisJCQkgICAgICB0YXJnZXQs IG1vZGUsIHRtb2RlLCByZXZlcnNlLCB0cnVlLCBhbHRfcnRsKTsKIH0KIAwK IC8qIFVzZSBzaGlmdHMgYW5kIGJvb2xlYW4gb3BlcmF0aW9ucyB0byBleHRy YWN0IGEgZmllbGQgb2YgQklUU0laRSBiaXRzCkluZGV4OiBnY2MvZXhwbWVk LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2V4cG1lZC5oCShy ZXZpc2lvbiAyNDU3NjQpCisrKyBnY2MvZXhwbWVkLmgJKHdvcmtpbmcgY29w eSkKQEAgLTcyNSw3ICs3MjUsNyBAQCBleHRlcm4gdm9pZCBzdG9yZV9iaXRf ZmllbGQgKHJ0eCwgdW5zaWduZWQgSE9TVF9XSQogCQkJICAgICBtYWNoaW5l X21vZGUsIHJ0eCwgYm9vbCk7CiBleHRlcm4gcnR4IGV4dHJhY3RfYml0X2Zp ZWxkIChydHgsIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQsCiAJCQkgICAgICB1 bnNpZ25lZCBIT1NUX1dJREVfSU5ULCBpbnQsIHJ0eCwKLQkJCSAgICAgIG1h Y2hpbmVfbW9kZSwgbWFjaGluZV9tb2RlLCBib29sKTsKKwkJCSAgICAgIG1h Y2hpbmVfbW9kZSwgbWFjaGluZV9tb2RlLCBib29sLCBydHggKik7CiBleHRl cm4gcnR4IGV4dHJhY3RfbG93X2JpdHMgKG1hY2hpbmVfbW9kZSwgbWFjaGlu ZV9tb2RlLCBydHgpOwogZXh0ZXJuIHJ0eCBleHBhbmRfbXVsdCAobWFjaGlu ZV9tb2RlLCBydHgsIHJ0eCwgcnR4LCBpbnQpOwogZXh0ZXJuIHJ0eCBleHBh bmRfbXVsdF9oaWdocGFydF9hZGp1c3QgKG1hY2hpbmVfbW9kZSwgcnR4LCBy dHgsIHJ0eCwgcnR4LCBpbnQpOwpJbmRleDogZ2NjL2V4cHIuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvZXhwci5jCShyZXZpc2lvbiAyNDU3 NjQpCisrKyBnY2MvZXhwci5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMTkyLDcg KzIxOTIsOCBAQCBlbWl0X2dyb3VwX2xvYWRfMSAocnR4ICp0bXBzLCBydHgg ZHN0LCBydHggb3JpZ19zcgogCQkgICAgICAmJiAoIVJFR19QICh0bXBzW2ld KSB8fCBHRVRfTU9ERSAodG1wc1tpXSkgIT0gbW9kZSkpKQogCQl0bXBzW2ld ID0gZXh0cmFjdF9iaXRfZmllbGQgKHRtcHNbaV0sIGJ5dGVsZW4gKiBCSVRT X1BFUl9VTklULAogCQkJCQkgICAgIHN1YnBvcyAqIEJJVFNfUEVSX1VOSVQs Ci0JCQkJCSAgICAgMSwgTlVMTF9SVFgsIG1vZGUsIG1vZGUsIGZhbHNlKTsK KwkJCQkJICAgICAxLCBOVUxMX1JUWCwgbW9kZSwgbW9kZSwgZmFsc2UsCisJ CQkJCSAgICAgTlVMTCk7CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgewpAQCAt MjIwMiw3ICsyMjAzLDggQEAgZW1pdF9ncm91cF9sb2FkXzEgKHJ0eCAqdG1w cywgcnR4IGRzdCwgcnR4IG9yaWdfc3IKIAkgICAgICBtZW0gPSBhc3NpZ25f c3RhY2tfdGVtcCAoR0VUX01PREUgKHNyYyksIHNsZW4pOwogCSAgICAgIGVt aXRfbW92ZV9pbnNuIChtZW0sIHNyYyk7CiAJICAgICAgdG1wc1tpXSA9IGV4 dHJhY3RfYml0X2ZpZWxkIChtZW0sIGJ5dGVsZW4gKiBCSVRTX1BFUl9VTklU LAotCQkJCQkgICAwLCAxLCBOVUxMX1JUWCwgbW9kZSwgbW9kZSwgZmFsc2Up OworCQkJCQkgICAwLCAxLCBOVUxMX1JUWCwgbW9kZSwgbW9kZSwgZmFsc2Us CisJCQkJCSAgIE5VTEwpOwogCSAgICB9CiAJfQogICAgICAgLyogRklYTUU6 IEEgU0lNRCBwYXJhbGxlbCB3aWxsIGV2ZW50dWFsbHkgbGVhZCB0byBhIHN1 YnJlZyBvZiBhCkBAIC0yMjQ1LDcgKzIyNDcsNyBAQCBlbWl0X2dyb3VwX2xv YWRfMSAocnR4ICp0bXBzLCBydHggZHN0LCBydHggb3JpZ19zcgogICAgICAg ZWxzZQogCXRtcHNbaV0gPSBleHRyYWN0X2JpdF9maWVsZCAoc3JjLCBieXRl bGVuICogQklUU19QRVJfVU5JVCwKIAkJCQkgICAgIGJ5dGVwb3MgKiBCSVRT X1BFUl9VTklULCAxLCBOVUxMX1JUWCwKLQkJCQkgICAgIG1vZGUsIG1vZGUs IGZhbHNlKTsKKwkJCQkgICAgIG1vZGUsIG1vZGUsIGZhbHNlLCBOVUxMKTsK IAogICAgICAgaWYgKHNoaWZ0KQogCXRtcHNbaV0gPSBleHBhbmRfc2hpZnQg KExTSElGVF9FWFBSLCBtb2RlLCB0bXBzW2ldLApAQCAtMjY5Nyw3ICsyNjk5 LDcgQEAgY29weV9ibGttb2RlX2Zyb21fcmVnIChydHggdGFyZ2V0LCBydHgg c3JjcmVnLCB0cmUKIAkJICAgICAgIGV4dHJhY3RfYml0X2ZpZWxkIChzcmMs IGJpdHNpemUsCiAJCQkJCSAgeGJpdHBvcyAlIEJJVFNfUEVSX1dPUkQsIDEs CiAJCQkJCSAgTlVMTF9SVFgsIGNvcHlfbW9kZSwgY29weV9tb2RlLAotCQkJ CQkgIGZhbHNlKSwKKwkJCQkJICBmYWxzZSwgTlVMTCksCiAJCSAgICAgICBm YWxzZSk7CiAgICAgfQogfQpAQCAtMjc3Niw3ICsyNzc4LDcgQEAgY29weV9i bGttb2RlX3RvX3JlZyAobWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgc3JjKQog CQkgICAgICAgZXh0cmFjdF9iaXRfZmllbGQgKHNyY193b3JkLCBiaXRzaXpl LAogCQkJCQkgIGJpdHBvcyAlIEJJVFNfUEVSX1dPUkQsIDEsCiAJCQkJCSAg TlVMTF9SVFgsIHdvcmRfbW9kZSwgd29yZF9tb2RlLAotCQkJCQkgIGZhbHNl KSwKKwkJCQkJICBmYWxzZSwgTlVMTCksCiAJCSAgICAgICBmYWxzZSk7CiAg ICAgfQogCkBAIC0zMjI1LDcgKzMyMjcsNyBAQCByZWFkX2NvbXBsZXhfcGFy dCAocnR4IGNwbHgsIGJvb2wgaW1hZ19wKQogICAgIH0KIAogICByZXR1cm4g ZXh0cmFjdF9iaXRfZmllbGQgKGNwbHgsIGliaXRzaXplLCBpbWFnX3AgPyBp Yml0c2l6ZSA6IDAsCi0JCQkgICAgdHJ1ZSwgTlVMTF9SVFgsIGltb2RlLCBp bW9kZSwgZmFsc2UpOworCQkJICAgIHRydWUsIE5VTExfUlRYLCBpbW9kZSwg aW1vZGUsIGZhbHNlLCBOVUxMKTsKIH0KIAwKIC8qIEEgc3Vicm91dGluZSBv ZiBlbWl0X21vdmVfaW5zbl8xLiAgWWV0IGFub3RoZXIgbG93cGFydCBnZW5l cmF0b3IuCkBAIC02OTExLDcgKzY5MTMsNyBAQCBzdG9yZV9maWVsZCAocnR4 IHRhcmdldCwgSE9TVF9XSURFX0lOVCBiaXRzaXplLCBITwogCXsKIAkgIG1h Y2hpbmVfbW9kZSB0ZW1wX21vZGUgPSBzbWFsbGVzdF9tb2RlX2Zvcl9zaXpl IChiaXRzaXplLCBNT0RFX0lOVCk7CiAJICB0ZW1wID0gZXh0cmFjdF9iaXRf ZmllbGQgKHRlbXAsIGJpdHNpemUsIDAsIDEsIE5VTExfUlRYLCB0ZW1wX21v ZGUsCi0JCQkJICAgIHRlbXBfbW9kZSwgZmFsc2UpOworCQkJCSAgICB0ZW1w X21vZGUsIGZhbHNlLCBOVUxMKTsKIAl9CiAKICAgICAgIC8qIFN0b3JlIHRo ZSB2YWx1ZSBpbiB0aGUgYml0ZmllbGQuICAqLwpAQCAtOTc2MCw3ICs5NzYy LDggQEAgZXhwYW5kX2V4cHJfcmVhbF8xICh0cmVlIGV4cCwgcnR4IHRhcmdl dCwgbWFjaGluZV8KIAkgICAgY2FzZSBHSU1QTEVfU0lOR0xFX1JIUzoKIAkg ICAgICB7CiAJCXIgPSBleHBhbmRfZXhwcl9yZWFsIChnaW1wbGVfYXNzaWdu X3JoczEgKGcpLCB0YXJnZXQsCi0JCQkJICAgICAgdG1vZGUsIG1vZGlmaWVy LCBOVUxMLCBpbm5lcl9yZWZlcmVuY2VfcCk7CisJCQkJICAgICAgdG1vZGUs IG1vZGlmaWVyLCBhbHRfcnRsLAorCQkJCSAgICAgIGlubmVyX3JlZmVyZW5j ZV9wKTsKIAkJYnJlYWs7CiAJICAgICAgfQogCSAgICBkZWZhdWx0OgpAQCAt MTAxOTAsNyArMTAxOTMsNyBAQCBleHBhbmRfZXhwcl9yZWFsXzEgKHRyZWUg ZXhwLCBydHggdGFyZ2V0LCBtYWNoaW5lXwogCQkJCQkwLCBUWVBFX1VOU0lH TkVEIChUUkVFX1RZUEUgKGV4cCkpLAogCQkJCQkobW9kaWZpZXIgPT0gRVhQ QU5EX1NUQUNLX1BBUk0KIAkJCQkJID8gTlVMTF9SVFggOiB0YXJnZXQpLAot CQkJCQltb2RlLCBtb2RlLCBmYWxzZSk7CisJCQkJCW1vZGUsIG1vZGUsIGZh bHNlLCBhbHRfcnRsKTsKIAkgIH0KIAlpZiAocmV2ZXJzZQogCSAgICAmJiBt b2RpZmllciAhPSBFWFBBTkRfTUVNT1JZCkBAIC0xMDY4Nyw3ICsxMDY5MCw3 IEBAIGV4cGFuZF9leHByX3JlYWxfMSAodHJlZSBleHAsIHJ0eCB0YXJnZXQs IG1hY2hpbmVfCiAJICAgIG9wMCA9IGV4dHJhY3RfYml0X2ZpZWxkIChvcDAs IGJpdHNpemUsIGJpdHBvcywgdW5zaWduZWRwLAogCQkJCSAgICAgKG1vZGlm aWVyID09IEVYUEFORF9TVEFDS19QQVJNCiAJCQkJICAgICAgPyBOVUxMX1JU WCA6IHRhcmdldCksCi0JCQkJICAgICBleHRfbW9kZSwgZXh0X21vZGUsIHJl dmVyc2VwKTsKKwkJCQkgICAgIGV4dF9tb2RlLCBleHRfbW9kZSwgcmV2ZXJz ZXAsIGFsdF9ydGwpOwogCiAJICAgIC8qIElmIHRoZSByZXN1bHQgaGFzIGEg cmVjb3JkIHR5cGUgYW5kIHRoZSBtb2RlIG9mIE9QMCBpcyBhbgogCSAgICAg ICBpbnRlZ3JhbCBtb2RlIHRoZW4sIGlmIEJJVFNJWkUgaXMgbmFycm93ZXIg dGhhbiB0aGlzIG1vZGUKQEAgLTEwOTA4LDcgKzEwOTExLDcgQEAgZXhwYW5k X2V4cHJfcmVhbF8xICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgbWFjaGluZV8K ICAgICAgIGVsc2UgaWYgKHJlZHVjZV9iaXRfZmllbGQpCiAJcmV0dXJuIGV4 dHJhY3RfYml0X2ZpZWxkIChvcDAsIFRZUEVfUFJFQ0lTSU9OICh0eXBlKSwg MCwKIAkJCQkgIFRZUEVfVU5TSUdORUQgKHR5cGUpLCBOVUxMX1JUWCwKLQkJ CQkgIG1vZGUsIG1vZGUsIGZhbHNlKTsKKwkJCQkgIG1vZGUsIG1vZGUsIGZh bHNlLCBOVUxMKTsKICAgICAgIC8qIEFzIGEgbGFzdCByZXNvcnQsIHNwaWxs IG9wMCB0byBtZW1vcnksIGFuZCByZWxvYWQgaXQgaW4gYQogCSBkaWZmZXJl bnQgbW9kZS4gICovCiAgICAgICBlbHNlIGlmICghTUVNX1AgKG9wMCkpCklu ZGV4OiBnY2Mvb3B0YWJzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g Z2NjL29wdGFicy5jCShyZXZpc2lvbiAyNDU3NjQpCisrKyBnY2Mvb3B0YWJz LmMJKHdvcmtpbmcgY29weSkKQEAgLTY5NDIsNiArNjk0Miw3IEBAIG1heWJl X2xlZ2l0aW1pemVfb3BlcmFuZCAoZW51bSBpbnNuX2NvZGUgaWNvZGUsIHVu CiAJcmV0dXJuIHRydWU7CiAKICAgICAgIG9wLT52YWx1ZSA9IGdlbl9yZWdf cnR4IChtb2RlKTsKKyAgICAgIG9wLT50YXJnZXQgPSAwOwogICAgICAgYnJl YWs7CiAKICAgICBjYXNlIEVYUEFORF9JTlBVVDoKSW5kZXg6IGdjYy9vcHRh YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mvb3B0YWJzLmgJ KHJldmlzaW9uIDI0NTc2NCkKKysrIGdjYy9vcHRhYnMuaAkod29ya2luZyBj b3B5KQpAQCAtNDgsOCArNDgsMTEgQEAgc3RydWN0IGV4cGFuZF9vcGVyYW5k IHsKICAgICAgcmF0aGVyIHRoYW4gc2lnbmVkLiAgT25seSBtZWFuaW5nZnVs IGZvciBjZXJ0YWluIHR5cGVzLiAgKi8KICAgdW5zaWduZWQgaW50IHVuc2ln bmVkX3AgOiAxOwogCisgIC8qIElzIHRoZSB0YXJnZXQgb3BlcmFuZC4gICov CisgIHVuc2lnbmVkIGludCB0YXJnZXQgOiAxOworCiAgIC8qIFVudXNlZDsg YXZhaWxhYmxlIGZvciBmdXR1cmUgdXNlLiAgKi8KLSAgdW5zaWduZWQgaW50 IHVudXNlZCA6IDc7CisgIHVuc2lnbmVkIGludCB1bnVzZWQgOiA2OwogCiAg IC8qIFRoZSBtb2RlIHBhc3NlZCB0byB0aGUgY29udmVydF8qX29wZXJhbmQg ZnVuY3Rpb24uICBJdCBoYXMgYQogICAgICB0eXBlLWRlcGVuZGVudCBtZWFu aW5nLiAgKi8K --001a11468aa8573eea0549b2866a--