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 6392D3858281 for ; Mon, 26 Sep 2022 09:27:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6392D3858281 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.93,345,1654588800"; d="diff'?scan'208,217";a="83678984" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 26 Sep 2022 01:27:46 -0800 IronPort-SDR: GdtliKTeIYtn6OQKc4MUCHSSn8JzBDgawZBLq1TKHx/CKfc4Yw5Uz5z2O6149V41EigYu4fufx Bom0A65Gv1GbHm16VxfdhpOc8R6EYTFcPYgx762soGffKT4Nz1846laA9NuHOgpqEmCNLNSoJd mjkmeM0HfAygvPzJpIGEIhoQpiZ9O2AtGzvYCVTX8qSva2vU9Ed2Modf/o7DGIqhl/G2xpizY8 cXaQRbGKIm8J3TrC2AfJFxC9x+CyPrxUZYriOGol4gBaons5CVuXwqljWLuxNV0zRZ+NexZ9oa s0w= Content-Type: multipart/mixed; boundary="------------3vgYuWxhqX4vKwdTcgsynraT" Message-ID: Date: Mon, 26 Sep 2022 11:27:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: [Patch] OpenACC: Fix reduction tree-sharing issue [PR106982] Content-Language: en-US To: Richard Biener CC: gcc-patches , Thomas Schwinge References: From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,NICE_REPLY_A,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: --------------3vgYuWxhqX4vKwdTcgsynraT Content-Type: multipart/alternative; boundary="------------qPaqYlMGkxswVPdFrSfzc3X7" --------------qPaqYlMGkxswVPdFrSfzc3X7 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi Richard, On 26.09.22 10:32, Richard Biener wrote: On Fri, Sep 23, 2022 at 5:25 PM Tobias Burnus wrote: This fixes a tree-sharing ICE. It seems as if all unshare_expr I added were required in this case. [...] looks like v1/v2/v3 are now unshared twice According to the assert, that's not the case. 'var' is a memory reference =E2=80=93 and taking out any of the newly added unshare_expr will give an ICE with the new *8.c testcase. better done when its used. That said, please put the unshares at places where new things are built, that's much clearer. That means the 'outgoing' at gimplify_assign (outgoing, teardown_call, &after_join); The most localized change is the 'else' branch: else - v1 =3D v2 =3D v3 =3D var; + { + /* Note that 'var' might be a mem ref. */ + v1 =3D unshare_expr (var); + v2 =3D unshare_expr (var); + v3 =3D unshare_expr (var); + incoming =3D unshare_expr (incoming); + outgoing =3D unshare_expr (outgoing); + } But then I still need to unshare v1/v2/v3 at one other place. Namely: Either in - gimplify_assign (v1, setup_call, &before_fork); + gimplify_assign (unshare_expr (v1), setup_call, &before_fork); or in =3D build_call_expr_internal_loc (loc, IFN_GOACC_REDUCTION, TREE_TYPE (var), 6, init_code, unshare_expr (ref_to_res), - v1, level, op, off); + unshare_expr (v1), level, op, off= ); Alternatively, I keep the else v1 =3D v2 =3D v3 =3D var; as is, possible adding the comment there, =E2=80=93 and then add the unshar= e_expr for v1/v2/v3/incoming to build_call_expr_internal_loc *and* for v1/v2/v3/outgoind to gimplify_assign. Which variant do you prefer? (I have attached both =E2=80=93 and the only difference is in omp-low.cc.) (Certainly, other permutations are possible, one is the one in the first pa= tch, but I like either of the two new patches more.) 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 --------------qPaqYlMGkxswVPdFrSfzc3X7-- --------------3vgYuWxhqX4vKwdTcgsynraT Content-Type: text/x-patch; charset="UTF-8"; name="oacc-reduction-v2.diff" Content-Disposition: attachment; filename="oacc-reduction-v2.diff" Content-Transfer-Encoding: base64 IGdjYy9vbXAtbG93LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxNSArKysrKysrKysrKy0tLS0KIGdjYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2dvYWNjL3JlZHVjdGlvbi03LmMgfCAyMiArKysrKysrKysrKysr KysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9y ZWR1Y3Rpb24tOC5jIHwgMTIgKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5n ZWQsIDQ1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZ2NjL29tcC1sb3cuY2MgYi9nY2Mvb21wLWxvdy5jYwppbmRleCBk OWY5YWFlYmMwYi4uMTQ0Y2NkNGJkM2QgMTAwNjQ0Ci0tLSBhL2djYy9vbXAt bG93LmNjCisrKyBiL2djYy9vbXAtbG93LmNjCkBAIC03NjMxLDcgKzc2MzEs MTQgQEAgbG93ZXJfb2FjY19yZWR1Y3Rpb25zIChsb2NhdGlvbl90IGxvYywg dHJlZSBjbGF1c2VzLCB0cmVlIGxldmVsLCBib29sIGlubmVyLAogCSAgICAg IGluY29taW5nID0gYnVpbGRfc2ltcGxlX21lbV9yZWYgKGluY29taW5nKTsK IAkgIH0KIAllbHNlCi0JICB2MSA9IHYyID0gdjMgPSB2YXI7CisJICB7CisJ ICAgIC8qIE5vdGUgdGhhdCAndmFyJyBtaWdodCBiZSBhIG1lbSByZWYuICAq LworCSAgICB2MSA9IHVuc2hhcmVfZXhwciAodmFyKTsKKwkgICAgdjIgPSB1 bnNoYXJlX2V4cHIgKHZhcik7CisJICAgIHYzID0gdW5zaGFyZV9leHByICh2 YXIpOworCSAgICBpbmNvbWluZyA9IHVuc2hhcmVfZXhwciAoaW5jb21pbmcp OworCSAgICBvdXRnb2luZyA9IHVuc2hhcmVfZXhwciAob3V0Z29pbmcpOwor CSAgfQogCiAJLyogRGV0ZXJtaW5lIHBvc2l0aW9uIGluIHJlZHVjdGlvbiBi dWZmZXIsIHdoaWNoIG1heSBiZSB1c2VkCiAJICAgYnkgdGFyZ2V0LiAgVGhl IHBhcnNlciBoYXMgZW5zdXJlZCB0aGF0IHRoaXMgaXMgbm90IGEKQEAgLTc2 NzUsOSArNzY4Miw5IEBAIGxvd2VyX29hY2NfcmVkdWN0aW9ucyAobG9jYXRp b25fdCBsb2MsIHRyZWUgY2xhdXNlcywgdHJlZSBsZXZlbCwgYm9vbCBpbm5l ciwKIAkJCQkJICBUUkVFX1RZUEUgKHZhciksIDYsIHRlYXJkb3duX2NvZGUs CiAJCQkJCSAgcmVmX3RvX3JlcywgdjMsIGxldmVsLCBvcCwgb2ZmKTsKIAot CWdpbXBsaWZ5X2Fzc2lnbiAodjEsIHNldHVwX2NhbGwsICZiZWZvcmVfZm9y ayk7Ci0JZ2ltcGxpZnlfYXNzaWduICh2MiwgaW5pdF9jYWxsLCAmYWZ0ZXJf Zm9yayk7Ci0JZ2ltcGxpZnlfYXNzaWduICh2MywgZmluaV9jYWxsLCAmYmVm b3JlX2pvaW4pOworCWdpbXBsaWZ5X2Fzc2lnbiAodW5zaGFyZV9leHByICh2 MSksIHNldHVwX2NhbGwsICZiZWZvcmVfZm9yayk7CisJZ2ltcGxpZnlfYXNz aWduICh1bnNoYXJlX2V4cHIgKHYyKSwgaW5pdF9jYWxsLCAmYWZ0ZXJfZm9y ayk7CisJZ2ltcGxpZnlfYXNzaWduICh1bnNoYXJlX2V4cHIgKHYzKSwgZmlu aV9jYWxsLCAmYmVmb3JlX2pvaW4pOwogCWdpbXBsaWZ5X2Fzc2lnbiAob3V0 Z29pbmcsIHRlYXJkb3duX2NhbGwsICZhZnRlcl9qb2luKTsKICAgICAgIH0K IApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29h Y2MvcmVkdWN0aW9uLTcuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2dvYWNjL3JlZHVjdGlvbi03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjQ4MmIwYWIxOTg0Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9u LTcuYwpAQCAtMCwwICsxLDIyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworCisvKiBQUiBtaWRkbGUtZW5kLzEwNjk4MiAqLworCitsb25nIGxvbmcg biA9IDEwMDsKK2ludCBtdWx0aXBsaWNpdGl2ZV9uID0gMTI4OworCit2b2lk IHRlc3QxKGRvdWJsZSAqcmFuZCwgZG91YmxlICphLCBkb3VibGUgKmIsIGRv dWJsZSAqYykKK3sKKyNwcmFnbWEgYWNjIGRhdGEgY29weWluKGFbMDoxMCpt dWx0aXBsaWNpdGl2ZV9uXSwgYlswOjEwKm11bHRpcGxpY2l0aXZlX25dKSBj b3B5b3V0KGNbMDoxMF0pCisgICAgeworI3ByYWdtYSBhY2MgcGFyYWxsZWwg bG9vcAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpCisg ICAgICAgIHsKKyAgICAgICAgZG91YmxlIHRlbXAgPSAxLjA7CisjcHJhZ21h IGFjYyBsb29wIHZlY3RvciByZWR1Y3Rpb24oKjp0ZW1wKQorICAgICAgICBm b3IgKGludCBqID0gMDsgaiA8IG11bHRpcGxpY2l0aXZlX247ICsraikKKyAg ICAgICAgICB0ZW1wICo9IGFbKGkgKiBtdWx0aXBsaWNpdGl2ZV9uKSArIGpd ICsgYlsoaSAqIG11bHRpcGxpY2l0aXZlX24pICsgal07CisgICAgICAgIGNb aV0gPSB0ZW1wOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTgu YyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlv bi04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjJjM2VkNDk5ZDViCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTguYwpAQCAtMCwwICsx LDEyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworCisvKiBQUiBtaWRk bGUtZW5kLzEwNjk4MiAqLworCit2b2lkIHRlc3QxKGRvdWJsZSAqYykKK3sK KyAgICBkb3VibGUgcmVkdWNlZFs1XTsKKyNwcmFnbWEgYWNjIHBhcmFsbGVs IGxvb3AgZ2FuZyBwcml2YXRlKHJlZHVjZWQpCisgICAgZm9yIChpbnQgeCA9 IDA7IHggPCA1OyArK3gpCisjcHJhZ21hIGFjYyBsb29wIHdvcmtlciByZWR1 Y3Rpb24oKjpyZWR1Y2VkKQorICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCA1 OyArK3kpIHsgfQorfQo= --------------3vgYuWxhqX4vKwdTcgsynraT Content-Type: text/x-patch; charset="UTF-8"; name="oacc-reduction-v2a.diff" Content-Disposition: attachment; filename="oacc-reduction-v2a.diff" Content-Transfer-Encoding: base64 T3BlbkFDQzogRml4IHJlZHVjdGlvbiB0cmVlLXNoYXJpbmcgaXNzdWUgW1BS MTA2OTgyXQoKVGhlIHRyZWUgZm9yIHZhciA9PSBpbmNvbWluZyA9PSBvdXRn b3VuZCB3YXMKJ01FTSA8ZG91YmxlWzVdPiBbKGRvdWJsZSAqKSZyZWR1Y2Vk XScgd2hpY2ggY2F1c2VkIHRoZSBJQ0UKImluY29ycmVjdCBzaGFyaW5nIG9m IHRyZWUgbm9kZXMiLgoKCVBSIG1pZGRsZS1lbmQvMTA2OTgyCgpnY2MvQ2hh bmdlTG9nOgoKCSogb21wLWxvdy5jYyAobG93ZXJfb2FjY19yZWR1Y3Rpb25z KTogQWRkIHNvbWUgdW5zaGFyZV9leHByLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFu Z2VMb2c6CgoJKiBjLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTcuYzog TmV3IHRlc3QuCgkqIGMtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tOC5j OiBOZXcgdGVzdC4KCiBnY2Mvb21wLWxvdy5jYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTkgKysrKysrKysrKystLS0tLS0tLQogZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTcuYyB8 IDIyICsrKysrKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi04LmMgfCAxMiArKysrKysrKysr KysKIDMgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2Mvb21wLWxvdy5jYyBiL2djYy9v bXAtbG93LmNjCmluZGV4IGQ5ZjlhYWViYzBiLi5kYzQyYzc1MjAxNyAxMDA2 NDQKLS0tIGEvZ2NjL29tcC1sb3cuY2MKKysrIGIvZ2NjL29tcC1sb3cuY2MK QEAgLTc2MzEsNiArNzYzMSw3IEBAIGxvd2VyX29hY2NfcmVkdWN0aW9ucyAo bG9jYXRpb25fdCBsb2MsIHRyZWUgY2xhdXNlcywgdHJlZSBsZXZlbCwgYm9v bCBpbm5lciwKIAkgICAgICBpbmNvbWluZyA9IGJ1aWxkX3NpbXBsZV9tZW1f cmVmIChpbmNvbWluZyk7CiAJICB9CiAJZWxzZQorCSAgLyogTm90ZSB0aGF0 ICd2YXInIG1pZ2h0IGJlIGEgbWVtIHJlZi4gICovCiAJICB2MSA9IHYyID0g djMgPSB2YXI7CiAKIAkvKiBEZXRlcm1pbmUgcG9zaXRpb24gaW4gcmVkdWN0 aW9uIGJ1ZmZlciwgd2hpY2ggbWF5IGJlIHVzZWQKQEAgLTc2NTksMjYgKzc2 NjAsMjggQEAgbG93ZXJfb2FjY19yZWR1Y3Rpb25zIChsb2NhdGlvbl90IGxv YywgdHJlZSBjbGF1c2VzLCB0cmVlIGxldmVsLCBib29sIGlubmVyLAogCSAg PSBidWlsZF9jYWxsX2V4cHJfaW50ZXJuYWxfbG9jIChsb2MsIElGTl9HT0FD Q19SRURVQ1RJT04sCiAJCQkJCSAgVFJFRV9UWVBFICh2YXIpLCA2LCBzZXR1 cF9jb2RlLAogCQkJCQkgIHVuc2hhcmVfZXhwciAocmVmX3RvX3JlcyksCi0J CQkJCSAgaW5jb21pbmcsIGxldmVsLCBvcCwgb2ZmKTsKKwkJCQkJICB1bnNo YXJlX2V4cHIgKGluY29taW5nKSwKKwkJCQkJICBsZXZlbCwgb3AsIG9mZik7 CiAJdHJlZSBpbml0X2NhbGwKIAkgID0gYnVpbGRfY2FsbF9leHByX2ludGVy bmFsX2xvYyAobG9jLCBJRk5fR09BQ0NfUkVEVUNUSU9OLAogCQkJCQkgIFRS RUVfVFlQRSAodmFyKSwgNiwgaW5pdF9jb2RlLAogCQkJCQkgIHVuc2hhcmVf ZXhwciAocmVmX3RvX3JlcyksCi0JCQkJCSAgdjEsIGxldmVsLCBvcCwgb2Zm KTsKKwkJCQkJICB1bnNoYXJlX2V4cHIgKHYxKSwgbGV2ZWwsIG9wLCBvZmYp OwogCXRyZWUgZmluaV9jYWxsCiAJICA9IGJ1aWxkX2NhbGxfZXhwcl9pbnRl cm5hbF9sb2MgKGxvYywgSUZOX0dPQUNDX1JFRFVDVElPTiwKIAkJCQkJICBU UkVFX1RZUEUgKHZhciksIDYsIGZpbmlfY29kZSwKIAkJCQkJICB1bnNoYXJl X2V4cHIgKHJlZl90b19yZXMpLAotCQkJCQkgIHYyLCBsZXZlbCwgb3AsIG9m Zik7CisJCQkJCSAgdW5zaGFyZV9leHByICh2MiksIGxldmVsLCBvcCwgb2Zm KTsKIAl0cmVlIHRlYXJkb3duX2NhbGwKIAkgID0gYnVpbGRfY2FsbF9leHBy X2ludGVybmFsX2xvYyAobG9jLCBJRk5fR09BQ0NfUkVEVUNUSU9OLAogCQkJ CQkgIFRSRUVfVFlQRSAodmFyKSwgNiwgdGVhcmRvd25fY29kZSwKLQkJCQkJ ICByZWZfdG9fcmVzLCB2MywgbGV2ZWwsIG9wLCBvZmYpOworCQkJCQkgIHJl Zl90b19yZXMsIHVuc2hhcmVfZXhwciAodjMpLAorCQkJCQkgIGxldmVsLCBv cCwgb2ZmKTsKIAotCWdpbXBsaWZ5X2Fzc2lnbiAodjEsIHNldHVwX2NhbGws ICZiZWZvcmVfZm9yayk7Ci0JZ2ltcGxpZnlfYXNzaWduICh2MiwgaW5pdF9j YWxsLCAmYWZ0ZXJfZm9yayk7Ci0JZ2ltcGxpZnlfYXNzaWduICh2MywgZmlu aV9jYWxsLCAmYmVmb3JlX2pvaW4pOwotCWdpbXBsaWZ5X2Fzc2lnbiAob3V0 Z29pbmcsIHRlYXJkb3duX2NhbGwsICZhZnRlcl9qb2luKTsKKwlnaW1wbGlm eV9hc3NpZ24gKHVuc2hhcmVfZXhwciAodjEpLCBzZXR1cF9jYWxsLCAmYmVm b3JlX2ZvcmspOworCWdpbXBsaWZ5X2Fzc2lnbiAodW5zaGFyZV9leHByICh2 MiksIGluaXRfY2FsbCwgJmFmdGVyX2ZvcmspOworCWdpbXBsaWZ5X2Fzc2ln biAodW5zaGFyZV9leHByICh2MyksIGZpbmlfY2FsbCwgJmJlZm9yZV9qb2lu KTsKKwlnaW1wbGlmeV9hc3NpZ24gKHVuc2hhcmVfZXhwciAob3V0Z29pbmcp LCB0ZWFyZG93bl9jYWxsLCAmYWZ0ZXJfam9pbik7CiAgICAgICB9CiAKICAg LyogTm93IHN0aXRjaCB0aGluZ3MgdG9nZXRoZXIuICAqLwpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9u LTcuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVj dGlvbi03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjQ4MmIwYWIxOTg0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTcuYwpAQCAtMCww ICsxLDIyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworCisvKiBQUiBt aWRkbGUtZW5kLzEwNjk4MiAqLworCitsb25nIGxvbmcgbiA9IDEwMDsKK2lu dCBtdWx0aXBsaWNpdGl2ZV9uID0gMTI4OworCit2b2lkIHRlc3QxKGRvdWJs ZSAqcmFuZCwgZG91YmxlICphLCBkb3VibGUgKmIsIGRvdWJsZSAqYykKK3sK KyNwcmFnbWEgYWNjIGRhdGEgY29weWluKGFbMDoxMCptdWx0aXBsaWNpdGl2 ZV9uXSwgYlswOjEwKm11bHRpcGxpY2l0aXZlX25dKSBjb3B5b3V0KGNbMDox MF0pCisgICAgeworI3ByYWdtYSBhY2MgcGFyYWxsZWwgbG9vcAorICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIHsKKyAg ICAgICAgZG91YmxlIHRlbXAgPSAxLjA7CisjcHJhZ21hIGFjYyBsb29wIHZl Y3RvciByZWR1Y3Rpb24oKjp0ZW1wKQorICAgICAgICBmb3IgKGludCBqID0g MDsgaiA8IG11bHRpcGxpY2l0aXZlX247ICsraikKKyAgICAgICAgICB0ZW1w ICo9IGFbKGkgKiBtdWx0aXBsaWNpdGl2ZV9uKSArIGpdICsgYlsoaSAqIG11 bHRpcGxpY2l0aXZlX24pICsgal07CisgICAgICAgIGNbaV0gPSB0ZW1wOwor ICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTguYyBiL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi04LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJjM2VkNDk5ZDVi Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29hY2MvcmVkdWN0aW9uLTguYwpAQCAtMCwwICsxLDEyIEBACisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworCisvKiBQUiBtaWRkbGUtZW5kLzEwNjk4 MiAqLworCit2b2lkIHRlc3QxKGRvdWJsZSAqYykKK3sKKyAgICBkb3VibGUg cmVkdWNlZFs1XTsKKyNwcmFnbWEgYWNjIHBhcmFsbGVsIGxvb3AgZ2FuZyBw cml2YXRlKHJlZHVjZWQpCisgICAgZm9yIChpbnQgeCA9IDA7IHggPCA1OyAr K3gpCisjcHJhZ21hIGFjYyBsb29wIHdvcmtlciByZWR1Y3Rpb24oKjpyZWR1 Y2VkKQorICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCA1OyArK3kpIHsgfQor fQo= --------------3vgYuWxhqX4vKwdTcgsynraT--