From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 175CE3858296 for ; Wed, 1 Mar 2023 13:48:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 175CE3858296 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.98,225,1673942400"; d="diff'?scan'208";a="98613196" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 01 Mar 2023 05:48:43 -0800 IronPort-SDR: Igf+yw/RkJCMG0CLLknO5NO1AcCrMbexvBHGyqHMBVmtBJGOEeouFwyl679ZqyLlAbuNxkFyIb SC3eFRwDoE8yFM2FEKECMrwVGCtsfS+N3ocB9cz0jEJScnLdVlXQKQXNGU6d20IUqfOOmXxA+N uL8joAhxiQSXZvIWFPX7yb4eR0IsRcq/NsHXHbEGME7Dv/q8dsh6EIoqVIJlz8IKu9A0o66rvp YgFSuJGBR2vRzalH1wN2ruhyTu4YmNVWT1EseJ+wlyJO1BdkqGea/tsj/9VPeHRe3PzkaGLSjX oJY= Content-Type: multipart/mixed; boundary="------------0c8fRb3Crryot0rIuzdWn15k" Message-ID: <085bfbd8-85b1-2dcf-042b-038005d35834@codesourcery.com> Date: Wed, 1 Mar 2023 14:48:36 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.2 Subject: Re: [Patch] OpenMP: Ignore side-effects when finding struct comps [PR108545] Content-Language: en-US To: Jakub Jelinek CC: gcc-patches References: <437597e7-a9ee-f6f1-3490-dd4e75ee13de@codesourcery.com> From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,NICE_REPLY_A,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: --------------0c8fRb3Crryot0rIuzdWn15k Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 01.03.23 14:03, Jakub Jelinek wrote: > On Tue, Feb 28, 2023 at 02:06:43PM +0100, Tobias Burnus wrote: > [...] > Do we use that hashing even say for ARRAY_REFs with array indexes? > Using OEP_MATCH_SIDE_EFFECTS will mean that > volatile int idx; > a.b[idx] and a.b[idx] will compare equal. On the other side, > if idx yielded different values on the same construct between the two, > I think it would be invalid OpenMP (trying to map the two different > array elements from the same array section), so perhaps we are ok. I think we are also okay because the sorting is for grouping and not for combining. I think you mean code like: struct t { int b[10]; } a; void f() { volatile int i =3D 1; #pragma omp target enter data map(to: a.b[i], a.b[i]) } This produces (independent of the patch) in the omplower dump: #pragma omp target enter data \ map(struct:a [len: 2]) \ map(to:a.b[i.0] [len: 4]) \ map(to:a.b[i.1] [len: 4]) (Same result when removing the 'volatile' on 'i'.) Without the patch, adding the 'volatile' to 'a' will break the analysis such that two 'struct:a [len: 1]' appear =E2=80=93 causing the I= CE. With the patch, we are back to the initial result as shown above. >> +/* Hash for trees based on operand_equal_p. >> + Like tree_operand_hash but accepts side effects. */ >> +struct tree_operand_sideeff_hash : ggc_ptr_hash > Not sure about the name, it isn't about that it accepts side effects, > but that it ignores them in the equality comparisons. > OEP_MATCH_SIDE_EFFECTS is probably misnamed too. I concur. > So perhaps struct tree_operand_hash_no_se (+ adjust the comment)? OK. > Also, can't you derive it from tree_operand_hash? > Than you wouldn't need to provide your own hash, you could > inherit tree_operand_hash::hash and just override equal. That would work as well - and done so. > Otherwise LGTM. Updated version attached. Once build + quick test has succeeded, I intent to commit it, unless more comments come up. Thanks for the review/suggestions, Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------0c8fRb3Crryot0rIuzdWn15k Content-Type: text/x-patch; charset="UTF-8"; name="pr108545-v2.diff" Content-Disposition: attachment; filename="pr108545-v2.diff" Content-Transfer-Encoding: base64 T3Blbk1QOiBJZ25vcmUgc2lkZS1lZmZlY3RzIHdoZW4gZmluZGluZyBzdHJ1Y3QgY29tcHMg W1BSMTA4NTQ1XQoKV2l0aCB2b2xhdGlsZSwgdHdvICd4LmRhdGEnIGNvbXAgcmVmcyBhcmVu J3QgcmVnYXJkZWQgYXMgaWRlbnRpY2FsLApjYXVzaW5nIHRoYXQgdGhlIHR3byBpdGVtcyBp biB0aGUgZmlyc3QgbWFwIG9mCiAgbWFwKHRvOnguYSwgeC5hLmRhdGEpIG1hcChwc2V0OiB4 LmEuZGF0YSkKZW5kIHVwIGluIHNlcGFyYXRlICdtYXAoc3RydWN0OngpJywgd2hpY2ggd2ls bCBjYXVzZSBhIGxhdGVyIElDRS4KClNvbHV0aW9uOiBJZ25vcmUgc2lkZSBlZmZlY3RzIHdo ZW4gY2hlY2tpbmcgdGhlIG9wZXJhbmRzIGluIHRoZSBoYXNoCmZvciBiZWluZyBlcXVhbC4g KERvIHNvIGJ5IGNyZWF0aW5nIGEgdmFyaWFudCBvZiB0cmVlX29wZXJhbmRfaGFzaAp0aGF0 IGNhbGxzIG9wZXJhbmRfZXF1YWxfcCB3aXRoIE9FUF9NQVRDSF9TSURFX0VGRkVDVFMuKQoK Z2NjL0NoYW5nZUxvZzoKCglQUiBtaWRkbGUtZW5kLzEwODU0NQoJKiBnaW1wbGlmeS5jYyAo c3RydWN0IHRyZWVfb3BlcmFuZF9oYXNoX25vX3NlKTogTmV3LgoJb21wX2luZGV4X21hcHBp bmdfZ3JvdXBzXzEsIG9tcF9pbmRleF9tYXBwaW5nX2dyb3VwcywKCW9tcF9yZWluZGV4X21h cHBpbmdfZ3JvdXBzLCBvbXBfbWFwcGVkX2J5X2NvbnRhaW5pbmdfc3RydWN0LAoJb21wX3Rz b3J0X21hcHBpbmdfZ3JvdXBzXzEsIG9tcF90c29ydF9tYXBwaW5nX2dyb3VwcywKCW9hY2Nf cmVzb2x2ZV9jbGF1c2VfZGVwZW5kZW5jaWVzLCBvbXBfYnVpbGRfc3RydWN0X3NpYmxpbmdf bGlzdHMsCglnaW1wbGlmeV9zY2FuX29tcF9jbGF1c2VzKTogVXNlIHRyZWVfb3BlcmFuZF9o YXNoX25vX3NlIGluc3RlYWQKCW9mIHRyZWVfb3BlcmFuZF9oYXNoLgoKZ2NjL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2c6CgoJUFIgbWlkZGxlLWVuZC8xMDg1NDUKCSogYy1jKystY29tbW9uL2dv bXAvbWFwLTguYzogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvbWFwLTkuZjkwOiBO ZXcgdGVzdC4KCiBnY2MvZ2ltcGxpZnkuY2MgICAgICAgICAgICAgICAgICAgICAgICAgIHwg NTEgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2dvbXAvbWFwLTguYyAgfCAxOSArKysrKysrKysrKysKIGdjYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC9tYXAtOS5mOTAgfCAxMyArKysrKysrKwogMyBmaWxlcyBj aGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9nY2MvZ2ltcGxpZnkuY2MgYi9nY2MvZ2ltcGxpZnkuY2MKaW5kZXggMzVkMWVhMjI2MjMu LmFkZTZlMzM1ZGE3IDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxpZnkuY2MKKysrIGIvZ2NjL2dp bXBsaWZ5LmNjCkBAIC04OTU4LDYgKzg5NTgsMjIgQEAgZW51bSBvbXBfdHNvcnRfbWFyayB7 CiAgIFBFUk1BTkVOVAogfTsKIAorLyogSGFzaCBmb3IgdHJlZXMgYmFzZWQgb24gb3BlcmFu ZF9lcXVhbF9wLiAgTGlrZSB0cmVlX29wZXJhbmRfaGFzaAorICAgYnV0IGlnbm9yZXMgc2lk ZSBlZmZlY3RzIGluIHRoZSBlcXVhbGl0eSBjb21wYXJpc29ucy4gICovCisKK3N0cnVjdCB0 cmVlX29wZXJhbmRfaGFzaF9ub19zZSA6IHRyZWVfb3BlcmFuZF9oYXNoCit7CisgIHN0YXRp YyBpbmxpbmUgYm9vbCBlcXVhbCAoY29uc3QgdmFsdWVfdHlwZSAmLAorCQkJICAgIGNvbnN0 IGNvbXBhcmVfdHlwZSAmKTsKK307CisKK2lubGluZSBib29sCit0cmVlX29wZXJhbmRfaGFz aF9ub19zZTo6ZXF1YWwgKGNvbnN0IHZhbHVlX3R5cGUgJnQxLAorCQkJCWNvbnN0IGNvbXBh cmVfdHlwZSAmdDIpCit7CisgIHJldHVybiBvcGVyYW5kX2VxdWFsX3AgKHQxLCB0MiwgT0VQ X01BVENIX1NJREVfRUZGRUNUUyk7Cit9CisKIC8qIEEgZ3JvdXAgb2YgT01QX0NMQVVTRV9N QVAgbm9kZXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2luZ2xlICJtYXAiCiAgICBjbGF1c2Uu ICAqLwogCkBAIC05NDAwLDEwICs5NDE2LDEwIEBAIG9tcF9ncm91cF9iYXNlIChvbXBfbWFw cGluZ19ncm91cCAqZ3JwLCB1bnNpZ25lZCBpbnQgKmNoYWluZWQsCiB9CiAKIC8qIEdpdmVu IGEgdmVjdG9yIG9mIG9tcF9tYXBwaW5nX2dyb3VwcywgYnVpbGQgYSBoYXNoIHRhYmxlIHNv IHdlIGNhbiBsb29rIHVwCi0gICBub2RlcyBieSB0cmVlX29wZXJhbmRfaGFzaC4gICovCisg ICBub2RlcyBieSB0cmVlX29wZXJhbmRfaGFzaF9ub19zZS4gICovCiAKIHN0YXRpYyB2b2lk Ci1vbXBfaW5kZXhfbWFwcGluZ19ncm91cHNfMSAoaGFzaF9tYXA8dHJlZV9vcGVyYW5kX2hh c2gsCitvbXBfaW5kZXhfbWFwcGluZ19ncm91cHNfMSAoaGFzaF9tYXA8dHJlZV9vcGVyYW5k X2hhc2hfbm9fc2UsCiAJCQkJICAgICBvbXBfbWFwcGluZ19ncm91cCAqPiAqZ3JwbWFwLAog CQkJICAgIHZlYzxvbXBfbWFwcGluZ19ncm91cD4gKmdyb3VwcywKIAkJCSAgICB0cmVlIHJl aW5kZXhfc2VudGluZWwpCkBAIC05NDMyLDcgKzk0NDgsNiBAQCBvbXBfaW5kZXhfbWFwcGlu Z19ncm91cHNfMSAoaGFzaF9tYXA8dHJlZV9vcGVyYW5kX2hhc2gsCiAJICAgbm9kZSA9IE9N UF9DTEFVU0VfQ0hBSU4gKG5vZGUpLCBqKyspCiAJewogCSAgdHJlZSBkZWNsID0gT01QX0NM QVVTRV9ERUNMIChub2RlKTsKLQogCSAgLyogU29tZXRpbWVzIHdlIHNlZSB6ZXJvLW9mZnNl dCBNRU1fUkVGIGluc3RlYWQgb2YgSU5ESVJFQ1RfUkVGLAogCSAgICAgbWVhbmluZyBub2Rl LWhhc2ggbG9va3VwcyBkb24ndCB3b3JrLiAgVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yCiAJ ICAgICB0aGF0LCBidXQgaWRlYWxseSB3ZSBzaG91bGQganVzdCBjcmVhdGUgdGhlIElORElS RUNUX1JFRiBhdApAQCAtOTQ3OCwxMSArOTQ5MywxMSBAQCBvbXBfaW5kZXhfbWFwcGluZ19n cm91cHNfMSAoaGFzaF9tYXA8dHJlZV9vcGVyYW5kX2hhc2gsCiAgICAgfQogfQogCi1zdGF0 aWMgaGFzaF9tYXA8dHJlZV9vcGVyYW5kX2hhc2gsIG9tcF9tYXBwaW5nX2dyb3VwICo+ICoK K3N0YXRpYyBoYXNoX21hcDx0cmVlX29wZXJhbmRfaGFzaF9ub19zZSwgb21wX21hcHBpbmdf Z3JvdXAgKj4gKgogb21wX2luZGV4X21hcHBpbmdfZ3JvdXBzICh2ZWM8b21wX21hcHBpbmdf Z3JvdXA+ICpncm91cHMpCiB7Ci0gIGhhc2hfbWFwPHRyZWVfb3BlcmFuZF9oYXNoLCBvbXBf bWFwcGluZ19ncm91cCAqPiAqZ3JwbWFwCi0gICAgPSBuZXcgaGFzaF9tYXA8dHJlZV9vcGVy YW5kX2hhc2gsIG9tcF9tYXBwaW5nX2dyb3VwICo+OworICBoYXNoX21hcDx0cmVlX29wZXJh bmRfaGFzaF9ub19zZSwgb21wX21hcHBpbmdfZ3JvdXAgKj4gKmdycG1hcAorICAgID0gbmV3 IGhhc2hfbWFwPHRyZWVfb3BlcmFuZF9oYXNoX25vX3NlLCBvbXBfbWFwcGluZ19ncm91cCAq PjsKIAogICBvbXBfaW5kZXhfbWFwcGluZ19ncm91cHNfMSAoZ3JwbWFwLCBncm91cHMsIE5V TExfVFJFRSk7CiAKQEAgLTk1MDIsMTQgKzk1MTcsMTQgQEAgb21wX2luZGV4X21hcHBpbmdf Z3JvdXBzICh2ZWM8b21wX21hcHBpbmdfZ3JvdXA+ICpncm91cHMpCiAgICBzbywgd2UgY2Fu IGRvIHRoZSByZWluZGV4IG9wZXJhdGlvbiBpbiB0d28gcGFydHMsIG9uIHRoZSBwcm9jZXNz ZWQgYW5kCiAgICB0aGVuIHRoZSB1bnByb2Nlc3NlZCBoYWx2ZXMgb2YgdGhlIGxpc3QuICAq LwogCi1zdGF0aWMgaGFzaF9tYXA8dHJlZV9vcGVyYW5kX2hhc2gsIG9tcF9tYXBwaW5nX2dy b3VwICo+ICoKK3N0YXRpYyBoYXNoX21hcDx0cmVlX29wZXJhbmRfaGFzaF9ub19zZSwgb21w X21hcHBpbmdfZ3JvdXAgKj4gKgogb21wX3JlaW5kZXhfbWFwcGluZ19ncm91cHMgKHRyZWUg Kmxpc3RfcCwKIAkJCSAgICB2ZWM8b21wX21hcHBpbmdfZ3JvdXA+ICpncm91cHMsCiAJCQkg ICAgdmVjPG9tcF9tYXBwaW5nX2dyb3VwPiAqcHJvY2Vzc2VkX2dyb3VwcywKIAkJCSAgICB0 cmVlIHNlbnRpbmVsKQogewotICBoYXNoX21hcDx0cmVlX29wZXJhbmRfaGFzaCwgb21wX21h cHBpbmdfZ3JvdXAgKj4gKmdycG1hcAotICAgID0gbmV3IGhhc2hfbWFwPHRyZWVfb3BlcmFu ZF9oYXNoLCBvbXBfbWFwcGluZ19ncm91cCAqPjsKKyAgaGFzaF9tYXA8dHJlZV9vcGVyYW5k X2hhc2hfbm9fc2UsIG9tcF9tYXBwaW5nX2dyb3VwICo+ICpncnBtYXAKKyAgICA9IG5ldyBo YXNoX21hcDx0cmVlX29wZXJhbmRfaGFzaF9ub19zZSwgb21wX21hcHBpbmdfZ3JvdXAgKj47 CiAKICAgcHJvY2Vzc2VkX2dyb3Vwcy0+dHJ1bmNhdGUgKDApOwogCkBAIC05NTUwLDcgKzk1 NjUsNyBAQCBvbXBfY29udGFpbmluZ19zdHJ1Y3QgKHRyZWUgZXhwcikKICAgIHRoYXQgbWFw cyB0aGF0IHN0cnVjdHVyZSwgaWYgcHJlc2VudC4gICovCiAKIHN0YXRpYyBib29sCi1vbXBf bWFwcGVkX2J5X2NvbnRhaW5pbmdfc3RydWN0IChoYXNoX21hcDx0cmVlX29wZXJhbmRfaGFz aCwKK29tcF9tYXBwZWRfYnlfY29udGFpbmluZ19zdHJ1Y3QgKGhhc2hfbWFwPHRyZWVfb3Bl cmFuZF9oYXNoX25vX3NlLAogCQkJCQkgIG9tcF9tYXBwaW5nX2dyb3VwICo+ICpncnBtYXAs CiAJCQkJIHRyZWUgZGVjbCwKIAkJCQkgb21wX21hcHBpbmdfZ3JvdXAgKiptYXBwZWRfYnlf Z3JvdXApCkBAIC05NTkwLDggKzk2MDUsOCBAQCBvbXBfbWFwcGVkX2J5X2NvbnRhaW5pbmdf c3RydWN0IChoYXNoX21hcDx0cmVlX29wZXJhbmRfaGFzaCwKIHN0YXRpYyBib29sCiBvbXBf dHNvcnRfbWFwcGluZ19ncm91cHNfMSAob21wX21hcHBpbmdfZ3JvdXAgKioqb3V0bGlzdCwK IAkJCSAgICB2ZWM8b21wX21hcHBpbmdfZ3JvdXA+ICpncm91cHMsCi0JCQkgICAgaGFzaF9t YXA8dHJlZV9vcGVyYW5kX2hhc2gsIG9tcF9tYXBwaW5nX2dyb3VwICo+Ci0JCQkgICAgICAq Z3JwbWFwLAorCQkJICAgIGhhc2hfbWFwPHRyZWVfb3BlcmFuZF9oYXNoX25vX3NlLAorCQkJ CSAgICAgb21wX21hcHBpbmdfZ3JvdXAgKj4gKmdycG1hcCwKIAkJCSAgICBvbXBfbWFwcGlu Z19ncm91cCAqZ3JwKQogewogICBpZiAoZ3JwLT5tYXJrID09IFBFUk1BTkVOVCkKQEAgLTk2 NzAsNyArOTY4NSw3IEBAIG9tcF90c29ydF9tYXBwaW5nX2dyb3Vwc18xIChvbXBfbWFwcGlu Z19ncm91cCAqKipvdXRsaXN0LAogCiBzdGF0aWMgb21wX21hcHBpbmdfZ3JvdXAgKgogb21w X3Rzb3J0X21hcHBpbmdfZ3JvdXBzICh2ZWM8b21wX21hcHBpbmdfZ3JvdXA+ICpncm91cHMs Ci0JCQkgIGhhc2hfbWFwPHRyZWVfb3BlcmFuZF9oYXNoLCBvbXBfbWFwcGluZ19ncm91cCAq PgorCQkJICBoYXNoX21hcDx0cmVlX29wZXJhbmRfaGFzaF9ub19zZSwgb21wX21hcHBpbmdf Z3JvdXAgKj4KIAkJCSAgICAqZ3JwbWFwKQogewogICBvbXBfbWFwcGluZ19ncm91cCAqZ3Jw LCAqb3V0bGlzdCA9IE5VTEwsICoqY3Vyc29yOwpAQCAtOTk4Niw3ICsxMDAwMSw3IEBAIG9t cF9jaGVja19tYXBwaW5nX2NvbXBhdGliaWxpdHkgKGxvY2F0aW9uX3QgbG9jLAogCiB2b2lk CiBvYWNjX3Jlc29sdmVfY2xhdXNlX2RlcGVuZGVuY2llcyAodmVjPG9tcF9tYXBwaW5nX2dy b3VwPiAqZ3JvdXBzLAotCQkJCSAgaGFzaF9tYXA8dHJlZV9vcGVyYW5kX2hhc2gsCisJCQkJ ICBoYXNoX21hcDx0cmVlX29wZXJhbmRfaGFzaF9ub19zZSwKIAkJCQkJICAgb21wX21hcHBp bmdfZ3JvdXAgKj4gKmdycG1hcCkKIHsKICAgaW50IGk7CkBAIC0xMDUyMCw4ICsxMDUzNSw4 IEBAIHN0YXRpYyBib29sCiBvbXBfYnVpbGRfc3RydWN0X3NpYmxpbmdfbGlzdHMgKGVudW0g dHJlZV9jb2RlIGNvZGUsCiAJCQkJZW51bSBvbXBfcmVnaW9uX3R5cGUgcmVnaW9uX3R5cGUs CiAJCQkJdmVjPG9tcF9tYXBwaW5nX2dyb3VwPiAqZ3JvdXBzLAotCQkJCWhhc2hfbWFwPHRy ZWVfb3BlcmFuZF9oYXNoLCBvbXBfbWFwcGluZ19ncm91cCAqPgotCQkJCSAgKipncnBtYXAs CisJCQkJaGFzaF9tYXA8dHJlZV9vcGVyYW5kX2hhc2hfbm9fc2UsCisJCQkJCSBvbXBfbWFw cGluZ19ncm91cCAqPiAqKmdycG1hcCwKIAkJCQl0cmVlICpsaXN0X3ApCiB7CiAgIHVuc2ln bmVkIGk7CkBAIC0xMDc0Nyw3ICsxMDc2Miw3IEBAIGdpbXBsaWZ5X3NjYW5fb21wX2NsYXVz ZXMgKHRyZWUgKmxpc3RfcCwgZ2ltcGxlX3NlcSAqcHJlX3AsCiAgICAgICBncm91cHMgPSBv bXBfZ2F0aGVyX21hcHBpbmdfZ3JvdXBzIChsaXN0X3ApOwogICAgICAgaWYgKGdyb3VwcykK IAl7Ci0JICBoYXNoX21hcDx0cmVlX29wZXJhbmRfaGFzaCwgb21wX21hcHBpbmdfZ3JvdXAg Kj4gKmdycG1hcDsKKwkgIGhhc2hfbWFwPHRyZWVfb3BlcmFuZF9oYXNoX25vX3NlLCBvbXBf bWFwcGluZ19ncm91cCAqPiAqZ3JwbWFwOwogCSAgZ3JwbWFwID0gb21wX2luZGV4X21hcHBp bmdfZ3JvdXBzIChncm91cHMpOwogCiAJICBvbXBfYnVpbGRfc3RydWN0X3NpYmxpbmdfbGlz dHMgKGNvZGUsIHJlZ2lvbl90eXBlLCBncm91cHMsICZncnBtYXAsCkBAIC0xMDc4Myw3ICsx MDc5OCw3IEBAIGdpbXBsaWZ5X3NjYW5fb21wX2NsYXVzZXMgKHRyZWUgKmxpc3RfcCwgZ2lt cGxlX3NlcSAqcHJlX3AsCiAgICAgICBncm91cHMgPSBvbXBfZ2F0aGVyX21hcHBpbmdfZ3Jv dXBzIChsaXN0X3ApOwogICAgICAgaWYgKGdyb3VwcykKIAl7Ci0JICBoYXNoX21hcDx0cmVl X29wZXJhbmRfaGFzaCwgb21wX21hcHBpbmdfZ3JvdXAgKj4gKmdycG1hcDsKKwkgIGhhc2hf bWFwPHRyZWVfb3BlcmFuZF9oYXNoX25vX3NlLCBvbXBfbWFwcGluZ19ncm91cCAqPiAqZ3Jw bWFwOwogCSAgZ3JwbWFwID0gb21wX2luZGV4X21hcHBpbmdfZ3JvdXBzIChncm91cHMpOwog CiAJICBvYWNjX3Jlc29sdmVfY2xhdXNlX2RlcGVuZGVuY2llcyAoZ3JvdXBzLCBncnBtYXAp OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9tYXAtOC5j IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9tYXAtOC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYzdkYWM4YmQwZgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvbWFwLTguYwpAQCAtMCww ICsxLDE5IEBACisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtb21w bG93ZXIiIH0gKi8KKworLyogUFIgZm9ydHJhbi8xMDg1NDUgKi8KKworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICIjcHJhZ21hIG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBtYXBc XChzdHJ1Y3Q6bXlfc3RydWN0IFxcXFtsZW46IDFcXFxdXFwpIG1hcFxcKHRvOm15X3N0cnVj dC51IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIgIm9tcGxvd2VyIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiI3ByYWdtYSBvbXAgdGFyZ2V0IGVudGVyIGRh dGEgbWFwXFwodG86bXlfc3RydWN0MyBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkiICJvbXBs b3dlciIgfSB9ICovCisKKwordm9sYXRpbGUgc3RydWN0IHQgeworICBzdHJ1Y3QgdDIgeyBp bnQgKmE7IGludCBjOyB9IHU7CisgIGludCBiOworfSBteV9zdHJ1Y3Q7Cit2b2xhdGlsZSBz dHJ1Y3QgdDMgeyBpbnQgKmE7IGludCBjOyB9IG15X3N0cnVjdDM7CisKK3ZvaWQgZigpCit7 CisgICNwcmFnbWEgb21wIHRhcmdldCBlbnRlciBkYXRhIG1hcCh0bzpteV9zdHJ1Y3QudSkg bWFwKHRvOm15X3N0cnVjdC51LmEpCisgICNwcmFnbWEgb21wIHRhcmdldCBlbnRlciBkYXRh IG1hcCh0bzpteV9zdHJ1Y3QzKSBtYXAodG86bXlfc3RydWN0My5hKQorfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL21hcC05LmY5MCBiL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9tYXAtOS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjllN2I4MTFjOGFmCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL21hcC05LmY5MApAQCAtMCwwICsxLDEzIEBA CishIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1vbXBsb3dlciIgfQor CishIFBSIGZvcnRyYW4vMTA4NTQ1CisKKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICIjcHJhZ21hIG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBtYXBcXChzdHJ1Y3Q6eCBcXFxbbGVu OiAxXFxcXVxcKSBtYXBcXCh0bzp4LmEgXFxcW2xlbjogXFswLTlcXStcXFxdXFwpIG1hcFxc KHRvOk1FTSA8aW50ZWdlclxcKGtpbmQ9NFxcKVxcXFswOlxcXF0+IFxcXFtcXChpbnRlZ2Vy XFwoa2luZD00XFwpXFxcWzA6XFxcXSBcXCpcXClfXFswLTlcXStdIFxcXFtsZW46IF9cWzAt OVxdK1xcXF1cXCkgbWFwXFwoYWx3YXlzX3BvaW50ZXI6eC5hLmRhdGEgXFxcW3BvaW50ZXIg YXNzaWduLCBiaWFzOiAwXFxcXVxcKSIgIm9tcGxvd2VyIiB9IH0KKworcHJvZ3JhbSBwCisg ICB0eXBlIHQKKyAgICAgIGludGVnZXIsIHBvaW50ZXIgOjogYSg6KQorICAgZW5kIHR5cGUK KyAgIHR5cGUodCksIHZvbGF0aWxlIDo6IHgKKyAgICEkb21wIHRhcmdldCBlbnRlciBkYXRh IG1hcCh0bzogeCVhKQorZW5kCg== --------------0c8fRb3Crryot0rIuzdWn15k--