From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id E85F23858D33 for ; Fri, 29 Dec 2023 12:11:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E85F23858D33 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E85F23858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=89.208.246.23 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703851905; cv=none; b=OjjJp3M7XhBkmHi78yVA9QcVb8ToLUvDmXr2Z4jmfqheN1k48P6bpHQq8+Zon+ZLkzHJB/okZDtsIPjLvrew58XSlhdp8Kf78cpNR8vYj7pOyQ11w3OWY3dhu3yntvGcF9w8CRScX9+wg33S0O7ZU3fmcf9wbunEyYekO4iAass= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703851905; c=relaxed/simple; bh=oikzTAcBtXcvh75EOOw1gRnakz46QZdyrrOtq7CV1w4=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=SdIANvUMA0ITsMC7jyFOWUC5nHRu7Dg5HJpDSaPXXRxU/0NNoQMGWYq7WwxKq+inh6mS1cm9JUn5Xglr+av1E+mCOddvXZ7fraQr1/AwiDc19LhOb2njC+1ImNY3TOsGJ4i79XGJoysW39iflJEcK3HLfwxM5C4roa488cTHcec= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1703851901; bh=oikzTAcBtXcvh75EOOw1gRnakz46QZdyrrOtq7CV1w4=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=PQ4GmAb2s7p/VtUmI5lHsdIjr/EUJTi6wpmogSQxlyBWStCNRh+qLhCLo3kc2p+t2 GsULTFqRMAMIxIOzVr1G+ZoIk/s6BA8SpXPtEoXQrHV9L9cHqT4IxCmhfHZAnCpuIq W75JR3t7ty+L88jkkBKQWUnR0RYnFVaDNqx100wY= Received: from [127.0.0.1] (unknown [IPv6:2001:470:683e::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 540E566973; Fri, 29 Dec 2023 07:11:39 -0500 (EST) Message-ID: Subject: Pushed: [PATCH v4] LoongArch: Replace -mexplicit-relocs=auto simple-used address peephole2 with combine From: Xi Ruoyao To: chenglulu , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn, c@jia.je Date: Fri, 29 Dec 2023 20:11:36 +0800 In-Reply-To: References: <20231228161611.10555-1-xry111@xry111.site> Autocrypt: addr=xry111@xry111.site; prefer-encrypt=mutual; keydata=mDMEYnkdPhYJKwYBBAHaRw8BAQdAsY+HvJs3EVKpwIu2gN89cQT/pnrbQtlvd6Yfq7egugi0HlhpIFJ1b3lhbyA8eHJ5MTExQHhyeTExMS5zaXRlPoiTBBMWCgA7FiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQrKrSDhnnEOPHFgD8D9vUToTd1MF5bng9uPJq5y3DfpcxDp+LD3joA3U2TmwA/jZtN9xLH7CGDHeClKZK/ZYELotWfJsqRcthOIGjsdAPuDgEYnkdPhIKKwYBBAGXVQEFAQEHQG+HnNiPZseiBkzYBHwq/nN638o0NPwgYwH70wlKMZhRAwEIB4h4BBgWCgAgFiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwwACgkQrKrSDhnnEOPjXgD/euD64cxwqDIqckUaisT3VCst11RcnO5iRHm6meNIwj0BALLmWplyi7beKrOlqKfuZtCLbiAPywGfCNg8LOTt4iMD Content-Type: multipart/mixed; boundary="=-mZV34ZZHrLrbsD4jhEno" User-Agent: Evolution 3.50.2 MIME-Version: 1.0 X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,KAM_STOCKGEN,LIKELY_SPAM_FROM,SPF_HELO_PASS,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: --=-mZV34ZZHrLrbsD4jhEno Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Pushed v4 as attached, with the format issues fixed and a minor adjustment in the commit message ("define_insn_and_split" is changed to "define_insn_and_rewrite" to match the actual change). On Fri, 2023-12-29 at 19:55 +0800, Xi Ruoyao wrote: > On Fri, 2023-12-29 at 15:57 +0800, chenglulu wrote: >=20 > /* snip */ >=20 > > > diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch= /loongarch.md > > /* snip */ > > > +(define_insn_and_rewrite "simple_load" > > > +=C2=A0 [(set (match_operand:LD_AT_LEAST_32_BIT 0 "register_operand" = "=3Dr,f") > > > + (match_operand:LD_AT_LEAST_32_BIT 1 "mem_simple_ldst_operand" ""))] > > > +=C2=A0 "loongarch_pre_reload_split () \ > > > +=C2=A0=C2=A0 && la_opt_explicit_relocs =3D=3D EXPLICIT_RELOCS_AUTO \ > > Is the '\' here dispensable? I don't seem to have added it when I wrote= =20 > > the conditions. >=20 > It seems '\' is not needed, I'll drop them. >=20 > /* snip */ >=20 > >=20 > > > +(define_predicate "mem_simple_ldst_operand" > > > +=C2=A0 (match_code "mem") > > > +{ > > > +=C2=A0 op =3D XEXP (op, 0); > > > +=C2=A0 return symbolic_pcrel_operand (op, Pmode) || > > > + symbolic_pcrel_offset_operand (op, Pmode); > > > +}) > > > + > > > =C2=A0=20 > > Symbol '||' It shouldn't be at the end of the line. >=20 > Indeed. >=20 > >=20 > > +=C2=A0 return symbolic_pcrel_operand (op, Pmode) > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 || symbolic_pcrel_offset_op= erand (op, Pmode); > >=20 > > Others LGTM. > > Thanks! > >=20 > > /* snip */ --=20 Xi Ruoyao School of Aerospace Science and Technology, Xidian University --=-mZV34ZZHrLrbsD4jhEno Content-Disposition: attachment; filename*0=v4-0001-LoongArch-Replace-mexplicit-relocs-auto-simple-us.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v4-0001-LoongArch-Replace-mexplicit-relocs-auto-simple-us.patch"; charset="UTF-8" RnJvbSA4YjYxZDEwOWIxMzBmMGU2NTUxODAzY2MzMGYzYzYwN2Q0ZmRlODFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBYaSBSdW95YW8gPHhyeTExMUB4cnkxMTEuc2l0ZT4KRGF0ZTog VHVlLCAxMiBEZWMgMjAyMyAwNDo1NDoyMSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjRdIExvb25n QXJjaDogUmVwbGFjZSAtbWV4cGxpY2l0LXJlbG9jcz1hdXRvIHNpbXBsZS11c2VkCiBhZGRyZXNz IHBlZXBob2xlMiB3aXRoIGNvbWJpbmUKClRoZSBwcm9ibGVtIHdpdGggcGVlcGhvbGUyIGlzIGl0 IHVzZXMgYSBuYWl2ZSBzbGlkaW5nLXdpbmRvdyBhbGdvcml0aG0KYW5kIG1pc3NlcyBtYW55IGNh c2VzLiAgRm9yIGV4YW1wbGU6CgogICAgZmxvYXQgYVsxMDAwMF07CiAgICBmbG9hdCB0KCkgeyBy ZXR1cm4gYVswXSArIGFbODAwMF07IH0KCmlzIGNvbXBpbGVkIHRvOgoKICAgIGxhLmxvY2FsICAg ICRyMTMsYQogICAgbGEubG9jYWwgICAgJHIxMixhKzMyNzY4CiAgICBmbGQucyAgICAgICAkZjEs JHIxMywwCiAgICBmbGQucyAgICAgICAkZjAsJHIxMiwtNzY4CiAgICBmYWRkLnMgICAgICAkZjAs JGYxLCRmMAoKYnkgdHJ1bmsuICBCdXQgYXMgd2UndmUgZXhwbGFpbmVkIGluIHIxNC00ODUxLCB0 aGUgZm9sbG93aW5nIHdvdWxkIGJlCmJldHRlciB3aXRoIC1tZXhwbGljaXQtcmVsb2NzPWF1dG86 CgogICAgcGNhbGF1MTJpICAgJHIxMywlcGNfaGkyMChhKQogICAgcGNhbGF1MTJpICAgJHIxMiwl cGNfaGkyMChhKzMyMDAwKQogICAgZmxkLnMgICAgICAgJGYxLCRyMTMsJXBjX2xvMTIoYSkKICAg IGZsZC5zICAgICAgICRmMCwkcjEyLCVwY19sbzEyKGErMzIwMDApCiAgICBmYWRkLnMgICAgICAk ZjAsJGYxLCRmMAoKSG93ZXZlciB0aGUgc2xpZGluZy13aW5kb3cgYWxnb3JpdGhtIGp1c3Qgd29u J3QgZGV0ZWN0IHRoZSBwY2FsYXUxMmkvZmxkCnBhaXIgdG8gYmUgb3B0aW1pemVkLiAgVXNlIGEg ZGVmaW5lX2luc25fYW5kX3Jld3JpdGUgaW4gY29tYmluZSBwYXNzCndpbGwgd29yayBhcm91bmQg dGhlIGlzc3VlLgoKZ2NjL0NoYW5nZUxvZzoKCgkqIGNvbmZpZy9sb29uZ2FyY2gvcHJlZGljYXRl cy5tZAoJKHN5bWJvbGljX3BjcmVsX29mZnNldF9vcGVyYW5kKTogTmV3IGRlZmluZV9wcmVkaWNh dGUuCgkobWVtX3NpbXBsZV9sZHN0X29wZXJhbmQpOiBMaWtld2lzZS4KCSogY29uZmlnL2xvb25n YXJjaC9sb29uZ2FyY2gtcHJvdG9zLmgKCShsb29uZ2FyY2hfcmV3cml0ZV9tZW1fZm9yX3NpbXBs ZV9sZHN0KTogRGVjbGFyZS4KCSogY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2guY2MKCShsb29u Z2FyY2hfcmV3cml0ZV9tZW1fZm9yX3NpbXBsZV9sZHN0KTogSW1wbGVtZW50LgoJKiBjb25maWcv bG9vbmdhcmNoL2xvb25nYXJjaC5tZCAoc2ltcGxlX2xvYWQ8bW9kZT4pOiBOZXcKCWRlZmluZV9p bnNuX2FuZF9yZXdyaXRlLgoJKHNpbXBsZV9sb2FkXzxzdT5leHQ8U1VCREk6bW9kZT48R1BSOm1v ZGU+KTogTGlrZXdpc2UuCgkoc2ltcGxlX3N0b3JlPG1vZGU+KTogTGlrZXdpc2UuCgkoZGVmaW5l X3BlZXBob2xlMik6IFJlbW92ZSBsYS5sb2NhbC9bZl1sZCBwZWVwaG9sZXMuCgpnY2MvdGVzdHN1 aXRlL0NoYW5nZUxvZzoKCgkqIGdjYy50YXJnZXQvbG9vbmdhcmNoL2V4cGxpY2l0LXJlbG9jcy1h dXRvLXNpbmdsZS1sb2FkLXN0b3JlLTIuYzoKCU5ldyB0ZXN0LgoJKiBnY2MudGFyZ2V0L2xvb25n YXJjaC9leHBsaWNpdC1yZWxvY3MtYXV0by1zaW5nbGUtbG9hZC1zdG9yZS0zLmM6CglOZXcgdGVz dC4KLS0tCiBnY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2gtcHJvdG9zLmggICAgICAgfCAg IDEgKwogZ2NjL2NvbmZpZy9sb29uZ2FyY2gvbG9vbmdhcmNoLmNjICAgICAgICAgICAgIHwgIDE2 ICsrKwogZ2NjL2NvbmZpZy9sb29uZ2FyY2gvbG9vbmdhcmNoLm1kICAgICAgICAgICAgIHwgMTE0 ICsrKysrLS0tLS0tLS0tLS0tLQogZ2NjL2NvbmZpZy9sb29uZ2FyY2gvcHJlZGljYXRlcy5tZCAg ICAgICAgICAgIHwgIDEzICsrCiAuLi5leHBsaWNpdC1yZWxvY3MtYXV0by1zaW5nbGUtbG9hZC1z dG9yZS0yLmMgfCAgMTEgKysKIC4uLmV4cGxpY2l0LXJlbG9jcy1hdXRvLXNpbmdsZS1sb2FkLXN0 b3JlLTMuYyB8ICAxOCArKysKIDYgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwgODcg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2xvb25nYXJjaC9leHBsaWNpdC1yZWxvY3MtYXV0by1zaW5nbGUtbG9hZC1zdG9yZS0yLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2V4cGxp Y2l0LXJlbG9jcy1hdXRvLXNpbmdsZS1sb2FkLXN0b3JlLTMuYwoKZGlmZiAtLWdpdCBhL2djYy9j b25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC1wcm90b3MuaCBiL2djYy9jb25maWcvbG9vbmdhcmNo L2xvb25nYXJjaC1wcm90b3MuaAppbmRleCA3YmYyMWE0NWM2OS4uMDI0ZjMxMTc2MDQgMTAwNjQ0 Ci0tLSBhL2djYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC1wcm90b3MuaAorKysgYi9nY2Mv Y29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2gtcHJvdG9zLmgKQEAgLTE2Myw2ICsxNjMsNyBAQCBl eHRlcm4gYm9vbCBsb29uZ2FyY2hfdXNlX2luc19leHRfcCAocnR4LCBIT1NUX1dJREVfSU5ULCBI T1NUX1dJREVfSU5UKTsKIGV4dGVybiBib29sIGxvb25nYXJjaF9jaGVja196ZXJvX2Rpdl9wICh2 b2lkKTsKIGV4dGVybiBib29sIGxvb25nYXJjaF9wcmVfcmVsb2FkX3NwbGl0ICh2b2lkKTsKIGV4 dGVybiBpbnQgbG9vbmdhcmNoX3VzZV9ic3RyaW5zX2Zvcl9pb3Jfd2l0aF9tYXNrIChtYWNoaW5l X21vZGUsIHJ0eCAqKTsKK2V4dGVybiBydHggbG9vbmdhcmNoX3Jld3JpdGVfbWVtX2Zvcl9zaW1w bGVfbGRzdCAocnR4KTsKIAogdW5pb24gbG9vbmdhcmNoX2dlbl9mbl9wdHJzCiB7CmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2guY2MgYi9nY2MvY29uZmlnL2xvb25n YXJjaC9sb29uZ2FyY2guY2MKaW5kZXggMWQ0ZDhmMGIyNTYuLjlmMmIzZTk4YmYwIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2guY2MKKysrIGIvZ2NjL2NvbmZpZy9s b29uZ2FyY2gvbG9vbmdhcmNoLmNjCkBAIC01NzE3LDYgKzU3MTcsMjIgQEAgbG9vbmdhcmNoX3Vz ZV9ic3RyaW5zX2Zvcl9pb3Jfd2l0aF9tYXNrIChtYWNoaW5lX21vZGUgbW9kZSwgcnR4ICpvcCkK ICAgcmV0dXJuIDA7CiB9CiAKKy8qIFJld3JpdGUgYSBNRU0gZm9yIHNpbXBsZSBsb2FkL3N0b3Jl IHVuZGVyIC1tZXhwbGljaXQtcmVsb2NzPWF1dG8KKyAgIC1tY21vZGVsPXtub3JtYWwvbWVkaXVt fS4gICovCitydHgKK2xvb25nYXJjaF9yZXdyaXRlX21lbV9mb3Jfc2ltcGxlX2xkc3QgKHJ0eCBt ZW0pCit7CisgIHJ0eCBhZGRyID0gWEVYUCAobWVtLCAwKTsKKyAgcnR4IGhpID0gZ2VuX3J0eF9V TlNQRUMgKFBtb2RlLCBnZW5fcnR2ZWMgKDEsIGFkZHIpLAorCQkJICAgVU5TUEVDX1BDQUxBVTEy SV9HUik7CisgIHJ0eCBuZXdfbWVtOworCisgIGFkZHIgPSBnZW5fcnR4X0xPX1NVTSAoUG1vZGUs IGZvcmNlX3JlZyAoUG1vZGUsIGhpKSwgYWRkcik7CisgIG5ld19tZW0gPSBnZW5fcnR4X01FTSAo R0VUX01PREUgKG1lbSksIGFkZHIpOworICBNRU1fQ09QWV9BVFRSSUJVVEVTIChuZXdfbWVtLCBt ZW0pOworICByZXR1cm4gbmV3X21lbTsKK30KKwogLyogUHJpbnQgdGhlIHRleHQgZm9yIFBSSU5U X09QRVJBTkQgcHVuY3RhdGlvbiBjaGFyYWN0ZXIgQ0ggdG8gRklMRS4KICAgIFRoZSBwdW5jdHVh dGlvbiBjaGFyYWN0ZXJzIGFyZToKIApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9sb29uZ2FyY2gv bG9vbmdhcmNoLm1kIGIvZ2NjL2NvbmZpZy9sb29uZ2FyY2gvbG9vbmdhcmNoLm1kCmluZGV4IGU1 NmVhNzFmMTNkLi5kNzA1NzE3YjVmYSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9sb29uZ2FyY2gv bG9vbmdhcmNoLm1kCisrKyBiL2djYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5tZApAQCAt NDEzNSwxMDEgKzQxMzUsNDEgQEAgKGRlZmluZV9pbnNuICJsb29uZ2FyY2hfY3JjY193XzxzaXpl Pl93IgogOzsKIDs7IEFuZCBpZiB0aGUgcHNldWRvIG9wIGNhbm5vdCBiZSByZWxheGVkLCB3ZSds bCBnZXQgYSB3b3JzZSByZXN1bHQgKHdpdGgKIDs7IDMgaW5zdHJ1Y3Rpb25zKS4KLShkZWZpbmVf cGVlcGhvbGUyCi0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlAgMCAicmVnaXN0ZXJfb3BlcmFuZCIp Ci0JKG1hdGNoX29wZXJhbmQ6UCAxICJzeW1ib2xpY19wY3JlbF9vcGVyYW5kIikpCi0gICAoc2V0 IChtYXRjaF9vcGVyYW5kOkxEX0FUX0xFQVNUXzMyX0JJVCAyICJyZWdpc3Rlcl9vcGVyYW5kIikK LQkobWVtOkxEX0FUX0xFQVNUXzMyX0JJVCAobWF0Y2hfZHVwIDApKSldCi0gICJsYV9vcHRfZXhw bGljaXRfcmVsb2NzID09IEVYUExJQ0lUX1JFTE9DU19BVVRPIFwKLSAgICYmIChUQVJHRVRfQ01P REVMX05PUk1BTCB8fCBUQVJHRVRfQ01PREVMX01FRElVTSkgXAotICAgJiYgKHBlZXAyX3JlZ19k ZWFkX3AgKDIsIG9wZXJhbmRzWzBdKSBcCi0gICAgICAgfHwgUkVHTk8gKG9wZXJhbmRzWzBdKSA9 PSBSRUdOTyAob3BlcmFuZHNbMl0pKSIKLSAgWyhzZXQgKG1hdGNoX2R1cCAyKQotCShtZW06TERf QVRfTEVBU1RfMzJfQklUIChsb19zdW06UCAobWF0Y2hfZHVwIDApIChtYXRjaF9kdXAgMSkpKSld Ci0gIHsKLSAgICBlbWl0X2luc24gKGdlbl9wY2FsYXUxMmlfZ3I8UDptb2RlPiAob3BlcmFuZHNb MF0sIG9wZXJhbmRzWzFdKSk7Ci0gIH0pCi0KLShkZWZpbmVfcGVlcGhvbGUyCi0gIFsoc2V0ICht YXRjaF9vcGVyYW5kOlAgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JKG1hdGNoX29wZXJhbmQ6UCAx ICJzeW1ib2xpY19wY3JlbF9vcGVyYW5kIikpCi0gICAoc2V0IChtYXRjaF9vcGVyYW5kOkxEX0FU X0xFQVNUXzMyX0JJVCAyICJyZWdpc3Rlcl9vcGVyYW5kIikKLQkobWVtOkxEX0FUX0xFQVNUXzMy X0JJVCAocGx1cyAobWF0Y2hfZHVwIDApCi0JCQkJKG1hdGNoX29wZXJhbmQgMyAiY29uc3RfaW50 X29wZXJhbmQiKSkpKV0KLSAgImxhX29wdF9leHBsaWNpdF9yZWxvY3MgPT0gRVhQTElDSVRfUkVM T0NTX0FVVE8gXAotICAgJiYgKFRBUkdFVF9DTU9ERUxfTk9STUFMIHx8IFRBUkdFVF9DTU9ERUxf TUVESVVNKSBcCi0gICAmJiAocGVlcDJfcmVnX2RlYWRfcCAoMiwgb3BlcmFuZHNbMF0pIFwKLSAg ICAgICB8fCBSRUdOTyAob3BlcmFuZHNbMF0pID09IFJFR05PIChvcGVyYW5kc1syXSkpIgotICBb KHNldCAobWF0Y2hfZHVwIDIpCi0JKG1lbTpMRF9BVF9MRUFTVF8zMl9CSVQgKGxvX3N1bTpQICht YXRjaF9kdXAgMCkgKG1hdGNoX2R1cCAxKSkpKV0KLSAgewotICAgIG9wZXJhbmRzWzFdID0gcGx1 c19jb25zdGFudCAoUG1vZGUsIG9wZXJhbmRzWzFdLCBJTlRWQUwgKG9wZXJhbmRzWzNdKSk7Ci0g ICAgZW1pdF9pbnNuIChnZW5fcGNhbGF1MTJpX2dyPFA6bW9kZT4gKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSkpOwotICB9KQotCi0oZGVmaW5lX3BlZXBob2xlMgotICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpQIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotCShtYXRjaF9vcGVyYW5kOlAgMSAic3ltYm9s aWNfcGNyZWxfb3BlcmFuZCIpKQotICAgKHNldCAobWF0Y2hfb3BlcmFuZDpHUFIgMiAicmVnaXN0 ZXJfb3BlcmFuZCIpCi0JKGFueV9leHRlbmQ6R1BSIChtZW06U1VCREkgKG1hdGNoX2R1cCAwKSkp KV0KLSAgImxhX29wdF9leHBsaWNpdF9yZWxvY3MgPT0gRVhQTElDSVRfUkVMT0NTX0FVVE8gXAot ICAgJiYgKFRBUkdFVF9DTU9ERUxfTk9STUFMIHx8IFRBUkdFVF9DTU9ERUxfTUVESVVNKSBcCi0g ICAmJiAocGVlcDJfcmVnX2RlYWRfcCAoMiwgb3BlcmFuZHNbMF0pIFwKLSAgICAgICB8fCBSRUdO TyAob3BlcmFuZHNbMF0pID09IFJFR05PIChvcGVyYW5kc1syXSkpIgotICBbKHNldCAobWF0Y2hf ZHVwIDIpCi0JKGFueV9leHRlbmQ6R1BSIChtZW06U1VCREkgKGxvX3N1bTpQIChtYXRjaF9kdXAg MCkKLQkJCQkJICAgICAobWF0Y2hfZHVwIDEpKSkpKV0KKyhkZWZpbmVfaW5zbl9hbmRfcmV3cml0 ZSAic2ltcGxlX2xvYWQ8bW9kZT4iCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkxEX0FUX0xFQVNU XzMyX0JJVCAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIsZiIpCisJKG1hdGNoX29wZXJhbmQ6TERf QVRfTEVBU1RfMzJfQklUIDEgIm1lbV9zaW1wbGVfbGRzdF9vcGVyYW5kIiAiIikpXQorICAibG9v bmdhcmNoX3ByZV9yZWxvYWRfc3BsaXQgKCkKKyAgICYmIGxhX29wdF9leHBsaWNpdF9yZWxvY3Mg PT0gRVhQTElDSVRfUkVMT0NTX0FVVE8KKyAgICYmIChUQVJHRVRfQ01PREVMX05PUk1BTCB8fCBU QVJHRVRfQ01PREVMX01FRElVTSkiCisgICIjIgorICAiJiYgdHJ1ZSIKICAgewotICAgIGVtaXRf aW5zbiAoZ2VuX3BjYWxhdTEyaV9ncjxQOm1vZGU+IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0p KTsKKyAgICBvcGVyYW5kc1sxXSA9IGxvb25nYXJjaF9yZXdyaXRlX21lbV9mb3Jfc2ltcGxlX2xk c3QgKG9wZXJhbmRzWzFdKTsKICAgfSkKIAotKGRlZmluZV9wZWVwaG9sZTIKLSAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6UCAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLQkobWF0Y2hfb3BlcmFuZDpQIDEg InN5bWJvbGljX3BjcmVsX29wZXJhbmQiKSkKLSAgIChzZXQgKG1hdGNoX29wZXJhbmQ6R1BSIDIg InJlZ2lzdGVyX29wZXJhbmQiKQorKGRlZmluZV9pbnNuX2FuZF9yZXdyaXRlICJzaW1wbGVfbG9h ZF88c3U+ZXh0PFNVQkRJOm1vZGU+PEdQUjptb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 R1BSIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCiAJKGFueV9leHRlbmQ6R1BSCi0JICAobWVt OlNVQkRJIChwbHVzIChtYXRjaF9kdXAgMCkKLQkJCSAgIChtYXRjaF9vcGVyYW5kIDMgImNvbnN0 X2ludF9vcGVyYW5kIikpKSkpXQotICAibGFfb3B0X2V4cGxpY2l0X3JlbG9jcyA9PSBFWFBMSUNJ VF9SRUxPQ1NfQVVUTyBcCi0gICAmJiAoVEFSR0VUX0NNT0RFTF9OT1JNQUwgfHwgVEFSR0VUX0NN T0RFTF9NRURJVU0pIFwKLSAgICYmIChwZWVwMl9yZWdfZGVhZF9wICgyLCBvcGVyYW5kc1swXSkg XAotICAgICAgIHx8IFJFR05PIChvcGVyYW5kc1swXSkgPT0gUkVHTk8gKG9wZXJhbmRzWzJdKSki Ci0gIFsoc2V0IChtYXRjaF9kdXAgMikKLQkoYW55X2V4dGVuZDpHUFIgKG1lbTpTVUJESSAobG9f c3VtOlAgKG1hdGNoX2R1cCAwKQotCQkJCQkgICAgIChtYXRjaF9kdXAgMSkpKSkpXQotICB7Ci0g ICAgb3BlcmFuZHNbMV0gPSBwbHVzX2NvbnN0YW50IChQbW9kZSwgb3BlcmFuZHNbMV0sIElOVFZB TCAob3BlcmFuZHNbM10pKTsKLSAgICBlbWl0X2luc24gKGdlbl9wY2FsYXUxMmlfZ3I8UDptb2Rl PiAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSk7Ci0gIH0pCi0KLShkZWZpbmVfcGVlcGhvbGUy Ci0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlAgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JKG1hdGNo X29wZXJhbmQ6UCAxICJzeW1ib2xpY19wY3JlbF9vcGVyYW5kIikpCi0gICAoc2V0IChtZW06U1Rf QU5ZIChtYXRjaF9kdXAgMCkpCi0JKG1hdGNoX29wZXJhbmQ6U1RfQU5ZIDIgInJlZ2lzdGVyX29w ZXJhbmQiKSldCi0gICJsYV9vcHRfZXhwbGljaXRfcmVsb2NzID09IEVYUExJQ0lUX1JFTE9DU19B VVRPIFwKLSAgICYmIChUQVJHRVRfQ01PREVMX05PUk1BTCB8fCBUQVJHRVRfQ01PREVMX01FRElV TSkgXAotICAgJiYgKHBlZXAyX3JlZ19kZWFkX3AgKDIsIG9wZXJhbmRzWzBdKSkgXAotICAgJiYg UkVHTk8gKG9wZXJhbmRzWzBdKSAhPSBSRUdOTyAob3BlcmFuZHNbMl0pIgotICBbKHNldCAobWVt OlNUX0FOWSAobG9fc3VtOlAgKG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDEpKSkgKG1hdGNoX2R1 cCAyKSldCisJICAobWF0Y2hfb3BlcmFuZDpTVUJESSAxICJtZW1fc2ltcGxlX2xkc3Rfb3BlcmFu ZCIgIiIpKSldCisgICJsb29uZ2FyY2hfcHJlX3JlbG9hZF9zcGxpdCAoKQorICAgJiYgbGFfb3B0 X2V4cGxpY2l0X3JlbG9jcyA9PSBFWFBMSUNJVF9SRUxPQ1NfQVVUTworICAgJiYgKFRBUkdFVF9D TU9ERUxfTk9STUFMIHx8IFRBUkdFVF9DTU9ERUxfTUVESVVNKSIKKyAgIiMiCisgICImJiB0cnVl IgogICB7Ci0gICAgZW1pdF9pbnNuIChnZW5fcGNhbGF1MTJpX2dyPFA6bW9kZT4gKG9wZXJhbmRz WzBdLCBvcGVyYW5kc1sxXSkpOworICAgIG9wZXJhbmRzWzFdID0gbG9vbmdhcmNoX3Jld3JpdGVf bWVtX2Zvcl9zaW1wbGVfbGRzdCAob3BlcmFuZHNbMV0pOwogICB9KQogCi0oZGVmaW5lX3BlZXBo b2xlMgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpQIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotCSht YXRjaF9vcGVyYW5kOlAgMSAic3ltYm9saWNfcGNyZWxfb3BlcmFuZCIpKQotICAgKHNldCAobWVt OlNUX0FOWSAocGx1cyAobWF0Y2hfZHVwIDApCi0JCQkgIChtYXRjaF9vcGVyYW5kIDMgImNvbnN0 X2ludF9vcGVyYW5kIikpKQotCShtYXRjaF9vcGVyYW5kOlNUX0FOWSAyICJyZWdpc3Rlcl9vcGVy YW5kIikpXQotICAibGFfb3B0X2V4cGxpY2l0X3JlbG9jcyA9PSBFWFBMSUNJVF9SRUxPQ1NfQVVU TyBcCi0gICAmJiAoVEFSR0VUX0NNT0RFTF9OT1JNQUwgfHwgVEFSR0VUX0NNT0RFTF9NRURJVU0p IFwKLSAgICYmIChwZWVwMl9yZWdfZGVhZF9wICgyLCBvcGVyYW5kc1swXSkpIFwKLSAgICYmIFJF R05PIChvcGVyYW5kc1swXSkgIT0gUkVHTk8gKG9wZXJhbmRzWzJdKSIKLSAgWyhzZXQgKG1lbTpT VF9BTlkgKGxvX3N1bTpQIChtYXRjaF9kdXAgMCkgKG1hdGNoX2R1cCAxKSkpIChtYXRjaF9kdXAg MikpXQorKGRlZmluZV9pbnNuX2FuZF9yZXdyaXRlICJzaW1wbGVfc3RvcmU8bW9kZT4iCisgIFso c2V0IChtYXRjaF9vcGVyYW5kOlNUX0FOWSAwICJtZW1fc2ltcGxlX2xkc3Rfb3BlcmFuZCIgIiIp CisJKG1hdGNoX29wZXJhbmQ6U1RfQU5ZIDEgInJlZ19vcl8wX29wZXJhbmQiICJyLGYiKSldCisg ICJsb29uZ2FyY2hfcHJlX3JlbG9hZF9zcGxpdCAoKQorICAgJiYgbGFfb3B0X2V4cGxpY2l0X3Jl bG9jcyA9PSBFWFBMSUNJVF9SRUxPQ1NfQVVUTworICAgJiYgKFRBUkdFVF9DTU9ERUxfTk9STUFM IHx8IFRBUkdFVF9DTU9ERUxfTUVESVVNKSIKKyAgIiMiCisgICImJiB0cnVlIgogICB7Ci0gICAg b3BlcmFuZHNbMV0gPSBwbHVzX2NvbnN0YW50IChQbW9kZSwgb3BlcmFuZHNbMV0sIElOVFZBTCAo b3BlcmFuZHNbM10pKTsKLSAgICBlbWl0X2luc24gKGdlbl9wY2FsYXUxMmlfZ3I8UDptb2RlPiAo b3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSk7CisgICAgb3BlcmFuZHNbMF0gPSBsb29uZ2FyY2hf cmV3cml0ZV9tZW1fZm9yX3NpbXBsZV9sZHN0IChvcGVyYW5kc1swXSk7CiAgIH0pCiAKIDs7IFN5 bmNocm9uaXphdGlvbiBpbnN0cnVjdGlvbnMuCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xvb25n YXJjaC9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZpZy9sb29uZ2FyY2gvcHJlZGljYXRlcy5tZApp bmRleCA4M2ZlYTA4MzE1Yy4uNGRiNDQ0MjMzYzcgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvbG9v bmdhcmNoL3ByZWRpY2F0ZXMubWQKKysrIGIvZ2NjL2NvbmZpZy9sb29uZ2FyY2gvcHJlZGljYXRl cy5tZApAQCAtNTc5LDYgKzU3OSwxOSBAQCAoZGVmaW5lX3ByZWRpY2F0ZSAic3ltYm9saWNfcGNy ZWxfb3BlcmFuZCIKICAgcmV0dXJuIGxvb25nYXJjaF9zeW1ib2xpY19jb25zdGFudF9wIChvcCwg JnR5cGUpICYmIHR5cGUgPT0gU1lNQk9MX1BDUkVMOwogfSkKIAorKGRlZmluZV9wcmVkaWNhdGUg InN5bWJvbGljX3BjcmVsX29mZnNldF9vcGVyYW5kIgorICAoYW5kIChtYXRjaF9jb2RlICJwbHVz IikKKyAgICAgICAobWF0Y2hfb3BlcmFuZCAwICJzeW1ib2xpY19wY3JlbF9vcGVyYW5kIikKKyAg ICAgICAobWF0Y2hfb3BlcmFuZCAxICJjb25zdF9pbnRfb3BlcmFuZCIpKSkKKworKGRlZmluZV9w cmVkaWNhdGUgIm1lbV9zaW1wbGVfbGRzdF9vcGVyYW5kIgorICAobWF0Y2hfY29kZSAibWVtIikK K3sKKyAgb3AgPSBYRVhQIChvcCwgMCk7CisgIHJldHVybiAoc3ltYm9saWNfcGNyZWxfb3BlcmFu ZCAob3AsIFBtb2RlKQorCSAgfHwgc3ltYm9saWNfcGNyZWxfb2Zmc2V0X29wZXJhbmQgKG9wLCBQ bW9kZSkpOworfSkKKwogKGRlZmluZV9wcmVkaWNhdGUgImVxdWFsaXR5X29wZXJhdG9yIgogICAo bWF0Y2hfY29kZSAiZXEsbmUiKSkKIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2xvb25nYXJjaC9leHBsaWNpdC1yZWxvY3MtYXV0by1zaW5nbGUtbG9hZC1zdG9yZS0yLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2V4cGxpY2l0LXJlbG9jcy1hdXRv LXNpbmdsZS1sb2FkLXN0b3JlLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNDJjYjk2NmQxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvbG9vbmdhcmNoL2V4cGxpY2l0LXJlbG9jcy1hdXRvLXNpbmdsZS1sb2FkLXN0b3JlLTIu YwpAQCAtMCwwICsxLDExIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItTzIgLW1hcmNoPWxvb25nYXJjaDY0IC1tYWJpPWxwNjRkIC1tZXhwbGljaXQtcmVsb2Nz PWF1dG8iIH0gKi8KKworZmxvYXQgYVs4MDAxXTsKK2Zsb2F0Cit0ICh2b2lkKQoreworICByZXR1 cm4gYVswXSArIGFbODAwMF07Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3QgImxhLmxvY2FsIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9sb29uZ2FyY2gvZXhwbGljaXQtcmVsb2NzLWF1dG8tc2luZ2xlLWxvYWQtc3RvcmUtMy5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9leHBsaWNpdC1yZWxvY3MtYXV0by1z aW5nbGUtbG9hZC1zdG9yZS0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjMyYWE1MzgzZDFjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2xvb25nYXJjaC9leHBsaWNpdC1yZWxvY3MtYXV0by1zaW5nbGUtbG9hZC1zdG9yZS0zLmMK QEAgLTAsMCArMSwxOCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1tZXhwbGljaXQtcmVsb2NzPWF1dG8gLWZkdW1wLXJ0bC1maW5hbCIgfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIm1lbS92L2MiIDIgImZpbmFsIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImxhXFwubG9jYWwiIH0gfSAq LworCit2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGNvdW50ZXI7CisKK3Vuc2lnbmVkIGxvbmcKK3Jl YWQgKHZvaWQpCit7CisgIHJldHVybiBjb3VudGVyOworfQorCit2b2lkCitjbGVhciAodm9pZCkK K3sKKyAgY291bnRlciA9IDA7Cit9Ci0tIAoyLjQzLjAKCg== --=-mZV34ZZHrLrbsD4jhEno--