From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15702 invoked by alias); 3 Nov 2010 13:21:57 -0000 Received: (qmail 15691 invoked by uid 22791); 3 Nov 2010 13:21:55 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,TW_TM X-Spam-Check-By: sourceware.org Received: from mail-qy0-f175.google.com (HELO mail-qy0-f175.google.com) (209.85.216.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 03 Nov 2010 13:21:49 +0000 Received: by qyk7 with SMTP id 7so88520qyk.20 for ; Wed, 03 Nov 2010 06:21:47 -0700 (PDT) Received: by 10.229.96.70 with SMTP id g6mr1671406qcn.294.1288790507359; Wed, 03 Nov 2010 06:21:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.4.25 with HTTP; Wed, 3 Nov 2010 06:21:26 -0700 (PDT) In-Reply-To: <20101103115902.GG26083@nightcrawler> References: <4CD05F30.2060500@redhat.com> <20101103115902.GG26083@nightcrawler> From: Artem Shinkarov Date: Wed, 03 Nov 2010 13:23:00 -0000 Message-ID: Subject: Re: Fold vector to scalar optimization To: Nathan Froyd Cc: Richard Henderson , Richard Guenther , gcc-patches@gcc.gnu.org, "Joseph S. Myers" Content-Type: multipart/mixed; boundary=0016368324e4618cbe049425eca5 X-IsSubscribed: yes 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 X-SW-Source: 2010-11/txt/msg00281.txt.bz2 --0016368324e4618cbe049425eca5 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1646 Oops. Thanks for that, also removed some debugging info. Tested and bootstrapped. Can someone approve this, cause there are patches waiting that depend on this one. Thanks, Artem. On Wed, Nov 3, 2010 at 11:59 AM, Nathan Froyd wr= ote: > On Wed, Nov 03, 2010 at 11:45:26AM +0000, Artem Shinkarov wrote: >> On Tue, Nov 2, 2010 at 6:57 PM, Richard Henderson wrote: >> > Do not bury assignments inside conditionals. >> >> All right, here we go. >> >> Index: gcc/tree-vect-generic.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- gcc/tree-vect-generic.c =A0 (revision 166126) >> +++ gcc/tree-vect-generic.c =A0 (working copy) >> @@ -284,6 +284,60 @@ expand_vector_addition (gimple_stmt_iter >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 a, b= , code); >> =A0} >> >> +/* Check if vector VEC consists of all the equal elements and >> + =A0 that the number of elements corresponds to the type of VEC. >> + =A0 Function sets ELEMENT with the first element of the vector >> + =A0 or NULL_TREE if comparison failed. =A0*/ >> +static bool uniform_vector_p (tree vec, tree *element) >> +{ >> ... >> + =A0 =A0 =A0for (t =3D els, i =3D 0; t; t =3D TREE_CHAIN (t), i++) >> + =A0 =A0 =A0 =A0eq =3D operand_equal_p (first, TREE_VALUE(t), 0); >> + =A0 =A0 =A0 =A0if (!eq) >> + =A0 =A0 =A0 =A0 =A0break; > > When unburying assignments, please make sure that the new code has the > same semantics as the old. > > -Nathan > --0016368324e4618cbe049425eca5 Content-Type: text/x-diff; charset=US-ASCII; name="vec-scal-opt.c.v4.diff" Content-Disposition: attachment; filename="vec-scal-opt.c.v4.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gg28kt3j0 Content-length: 10309 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlYy1zY2FsLW9wdDIuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2djYy5k Zy92ZWMtc2NhbC1vcHQyLmMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWMtc2NhbC1vcHQyLmMJKHJldmlzaW9uIDApCkBAIC0w LDAgKzEsMTkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXZlY2xvd2VyIiB9ICovCisKKyNk ZWZpbmUgdmlkeCh0eXBlLCB2ZWMsIGlkeCkgKCooKHR5cGUgKikgJih2ZWMp ICsgaWR4KSkKKyNkZWZpbmUgdmVjdG9yKGVsY291bnQsIHR5cGUpICBcCitf X2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgoZWxjb3VudCkqc2l6ZW9mKHR5 cGUpKSkpIHR5cGUKKworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2 W10pIHsKKyAgIHZlY3Rvcig4LCBzaG9ydCkgdjAgPSB7YXJnYywxLDIsMyw0 LDUsNiw3fTsKKyAgIHZlY3Rvcig4LCBzaG9ydCkgdjEgPSB7MiwyLDIsMiwy LDIsMiwyfTsKKyAgIHZlY3Rvcig4LCBzaG9ydCkgcjE7CisKKyAgIHIxID0g djAgPj4gdjE7CisKKyAgIHJldHVybiB2aWR4KHNob3J0LCByMSwgMCk7Cit9 CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiPj4g MiIgMSAidmVjbG93ZXIiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IGNsZWFu dXAtdHJlZS1kdW1wICJ2ZWNsb3dlciIgfSB9ICovCkluZGV4OiBnY2MvdGVz dHN1aXRlL2djYy5kZy92ZWMtc2NhbC1vcHQuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy92ZWMtc2NhbC1vcHQu YwkocmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlYy1z Y2FsLW9wdC5jCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtZmR1 bXAtdHJlZS12ZWNsb3dlciIgfSAqLworCisjZGVmaW5lIHZpZHgodHlwZSwg dmVjLCBpZHgpICgqKCh0eXBlICopICYodmVjKSArIGlkeCkpCisjZGVmaW5l IHZlY3RvcihlbGNvdW50LCB0eXBlKSAgXAorX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoKGVsY291bnQpKnNpemVvZih0eXBlKSkpKSB0eXBlCisKK3No b3J0IGs7CisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKSB7 CisgICBrID0gYXJnYzsKKyAgIHZlY3Rvcig4LCBzaG9ydCkgdjAgPSB7YXJn YywxLDIsMyw0LDUsNiw3fTsKKyAgIHZlY3Rvcig4LCBzaG9ydCkgdjIgPSB7 aywgICBrLGssayxrLGssayxrfTsKKyAgIHZlY3Rvcig4LCBzaG9ydCkgcjE7 CisKKyAgIHIxID0gdjAgPj4gdjI7CisKKyAgIHJldHVybiB2aWR4KHNob3J0 LCByMSwgMCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAiPj4gay5cWzAtOV9cXSoiIDEgInZlY2xvd2VyIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBjbGVhbnVwLXRyZWUtZHVtcCAidmVjbG93ZXIi IH0gfSAqLwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjLXNjYWwt b3B0MS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlYy1zY2FsLW9wdDEuYwkocmV2aXNpb24gMCkKKysrIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ZlYy1zY2FsLW9wdDEuYwkocmV2aXNpb24g MCkKQEAgLTAsMCArMSwyMCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUtdmVjbG93ZXIiIH0g Ki8KKworI2RlZmluZSB2aWR4KHR5cGUsIHZlYywgaWR4KSAoKigodHlwZSAq KSAmKHZlYykgKyBpZHgpKQorI2RlZmluZSB2ZWN0b3IoZWxjb3VudCwgdHlw ZSkgIFwKK19fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKChlbGNvdW50KSpz aXplb2YodHlwZSkpKSkgdHlwZQorCitzaG9ydCBrOworCitpbnQgbWFpbiAo aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICAgdmVjdG9yKDgsIHNob3J0 KSB2MCA9IHthcmdjLDEsMiwzLDQsNSw2LDd9OworICAgdmVjdG9yKDgsIHNo b3J0KSByMTsKKworICAgcjEgPSB2MCA+PiAodmVjdG9yKDgsIHNob3J0KSl7 MiwyLDIsMiwyLDIsMiwyfTsKKworICAgcmV0dXJuIHZpZHgoc2hvcnQsIHIx LCAwKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRp bWVzICI+PiAyIiAxICJ2ZWNsb3dlciIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgY2xlYW51cC10cmVlLWR1bXAgInZlY2xvd2VyIiB9IH0gKi8KSW5kZXg6 IGdjYy90cmVlLXZlY3QtZ2VuZXJpYy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy90cmVlLXZlY3QtZ2VuZXJpYy5jCShyZXZpc2lvbiAxNjYx MjYpCisrKyBnY2MvdHJlZS12ZWN0LWdlbmVyaWMuYwkod29ya2luZyBjb3B5 KQpAQCAtMjg0LDYgKzI4NCw2MiBAQCBleHBhbmRfdmVjdG9yX2FkZGl0aW9u IChnaW1wbGVfc3RtdF9pdGVyCiAJCQkJICAgIGEsIGIsIGNvZGUpOwogfQog CisvKiBDaGVjayBpZiB2ZWN0b3IgVkVDIGNvbnNpc3RzIG9mIGFsbCB0aGUg ZXF1YWwgZWxlbWVudHMgYW5kCisgICB0aGF0IHRoZSBudW1iZXIgb2YgZWxl bWVudHMgY29ycmVzcG9uZHMgdG8gdGhlIHR5cGUgb2YgVkVDLgorICAgRnVu Y3Rpb24gc2V0cyBFTEVNRU5UIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2Yg dGhlIHZlY3RvcgorICAgb3IgTlVMTF9UUkVFIGlmIGNvbXBhcmlzb24gZmFp bGVkLiAgKi8KK3N0YXRpYyBib29sIHVuaWZvcm1fdmVjdG9yX3AgKHRyZWUg dmVjLCB0cmVlICplbGVtZW50KQoreworICB0cmVlIGZpcnN0LCB0LCBlbHM7 CisgIGJvb2wgZXEgPSB0cnVlOworICB1bnNpZ25lZCBIT1NUX1dJREVfSU5U IGk7CisKKyAgKmVsZW1lbnQgPSBOVUxMX1RSRUU7CisKKyAgaWYgKHZlYyA9 PSBOVUxMX1RSRUUpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGlmIChUUkVF X0NPREUgKHZlYykgPT0gVkVDVE9SX0NTVCkKKyAgICB7CisgICAgICBlbHMg PSBUUkVFX1ZFQ1RPUl9DU1RfRUxUUyAodmVjKTsKKyAgICAgIGZpcnN0ID0g VFJFRV9WQUxVRSAoZWxzKTsKKyAgICAgIGVscyA9IFRSRUVfQ0hBSU4gKGVs cyk7CisKKyAgICAgIGZvciAodCA9IGVscywgaSA9IDA7IHQ7IHQgPSBUUkVF X0NIQUlOICh0KSwgaSsrKQorICAgICAgICB7CisgICAgICAgICAgZXEgPSBv cGVyYW5kX2VxdWFsX3AgKGZpcnN0LCBUUkVFX1ZBTFVFKHQpLCAwKTsKKyAg ICAgICAgICBpZiAoIWVxKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg IH0KKworICAgICAgKmVsZW1lbnQgPSBmaXJzdDsKKyAgICAgIHJldHVybiBl cSAmJiAoaSA9PSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAoVFJFRV9UWVBFICh2 ZWMpKS0xKTsKKyAgICB9CisKKyAgZWxzZSBpZiAoVFJFRV9DT0RFICh2ZWMp ID09IENPTlNUUlVDVE9SKQorICAgIHsKKyAgICAgIGZpcnN0ID0gZXJyb3Jf bWFya19ub2RlOworCisgICAgICBGT1JfRUFDSF9DT05TVFJVQ1RPUl9WQUxV RSAoQ09OU1RSVUNUT1JfRUxUUyAodmVjKSwgaSwgdCkKKyAgICAgICAgewor ICAgICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgIGZpcnN0ID0gdDsKKyAgICAgICAgICAgICAgY29udGludWU7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgZXEgPSAoZmlyc3QgPT0gdCk7Cisg ICAgICAgICAgaWYgKCFlcSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisgICAgICAKKyAgICAgICplbGVtZW50ID0gZmlyc3Q7CisgICAgICBy ZXR1cm4gZXEgJiYgKGkgPT0gVFlQRV9WRUNUT1JfU1VCUEFSVFMgKFRSRUVf VFlQRSAodmVjKSkpOworICAgICAgCisgICAgfQorICAKKyAgcmV0dXJuIGZh bHNlOworfQorCiBzdGF0aWMgdHJlZQogZXhwYW5kX3ZlY3Rvcl9vcGVyYXRp b24gKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIHRyZWUgdHlwZSwgdHJl ZSBjb21wdXRlX3R5cGUsCiAJCQkgZ2ltcGxlIGFzc2lnbiwgZW51bSB0cmVl X2NvZGUgY29kZSkKQEAgLTM5Miw3ICs0NDgsNyBAQCBleHBhbmRfdmVjdG9y X29wZXJhdGlvbnNfMSAoZ2ltcGxlX3N0bXRfCiAgIHRyZWUgbGhzLCByaHMx LCByaHMyID0gTlVMTCwgdHlwZSwgY29tcHV0ZV90eXBlOwogICBlbnVtIHRy ZWVfY29kZSBjb2RlOwogICBlbnVtIG1hY2hpbmVfbW9kZSBjb21wdXRlX21v ZGU7Ci0gIG9wdGFiIG9wOworICBvcHRhYiBvcCA9IE5VTEw7CiAgIGVudW0g Z2ltcGxlX3Joc19jbGFzcyByaHNfY2xhc3M7CiAgIHRyZWUgbmV3X3JoczsK IApAQCAtNDM0LDE4ICs0OTAsNDUgQEAgZXhwYW5kX3ZlY3Rvcl9vcGVyYXRp b25zXzEgKGdpbXBsZV9zdG10XwogICAgICAgfHwgY29kZSA9PSBMUk9UQVRF X0VYUFIKICAgICAgIHx8IGNvZGUgPT0gUlJPVEFURV9FWFBSKQogICAgIHsK LSAgICAgIC8qIElmIHRoZSAybmQgYXJndW1lbnQgaXMgdmVjdG9yLCB3ZSBu ZWVkIGEgdmVjdG9yL3ZlY3RvciBzaGlmdCAqLworICAgICAgYm9vbCB2ZWN0 b3Jfc2NhbGFyX3NoaWZ0OworICAgICAgb3AgPSBvcHRhYl9mb3JfdHJlZV9j b2RlIChjb2RlLCB0eXBlLCBvcHRhYl9zY2FsYXIpOworICAgICAgCisgICAg ICAvKiBWZWN0b3IvU2NhbGFyIHNoaWZ0IGlzIHN1cHBvcnRlZC4gICovCisg ICAgICB2ZWN0b3Jfc2NhbGFyX3NoaWZ0ID0gISghb3AgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8fCBvcHRhYl9oYW5kbGVyIChvcCwgVFlQ RV9NT0RFICh0eXBlKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA9PSBDT0RFX0ZPUl9ub3RoaW5nKTsKKworICAgICAgLyogSWYgdGhl IDJuZCBhcmd1bWVudCBpcyB2ZWN0b3IsIHdlIG5lZWQgYSB2ZWN0b3IvdmVj dG9yIHNoaWZ0LgorICAgICAgICAgRXhjZXB0IGFsbCB0aGUgZWxlbWVudHMg aW4gdGhlIHNlY29uZCB2ZWN0b3IgYXJlIHRoZSBzYW1lLiAgKi8KICAgICAg IGlmIChWRUNUT1JfTU9ERV9QIChUWVBFX01PREUgKFRSRUVfVFlQRSAocmhz MikpKSkKLQlvcCA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNvZGUsIHR5cGUs IG9wdGFiX3ZlY3Rvcik7Ci0gICAgICBlbHNlCi0JewotCSAgLyogVHJ5IGZv ciBhIHZlY3Rvci9zY2FsYXIgc2hpZnQsIGFuZCBpZiB3ZSBkb24ndCBoYXZl IG9uZSwgc2VlIGlmIHdlCi0JICAgICBoYXZlIGEgdmVjdG9yL3ZlY3RvciBz aGlmdCAqLwotCSAgb3AgPSBvcHRhYl9mb3JfdHJlZV9jb2RlIChjb2RlLCB0 eXBlLCBvcHRhYl9zY2FsYXIpOwotCSAgaWYgKCFvcAotCSAgICAgIHx8IG9w dGFiX2hhbmRsZXIgKG9wLCBUWVBFX01PREUgKHR5cGUpKSA9PSBDT0RFX0ZP Ul9ub3RoaW5nKQotCSAgICBvcCA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNv ZGUsIHR5cGUsIG9wdGFiX3ZlY3Rvcik7Ci0JfQorICAgICAgICB7CisgICAg ICAgICAgdHJlZSBmaXJzdCwgdmFyID0gTlVMTF9UUkVFOworICAgICAgICAg IGdpbXBsZSBkZWZfc3RtdDsKKworICAgICAgICAgIC8qIENoZWNrIHdoZXRo ZXIgd2UgaGF2ZSB2ZWN0b3IgPG9wPiB7eCx4LHgseH0gd2hlcmUgeAorICAg ICAgICAgICAgIGNvdWxkIGJlIGEgc2NhbGFyIHZhcmlhYmxlIG9yIGEgY29u c3RhbnQuIFRyYW5zZm9ybQorICAgICAgICAgICAgIHZlY3RvciA8b3A+IHt4 LHgseCx4fSA9PT4gdmVjdG9yIDxvcD4gc2NhbGFyLiAgKi8KKyAgICAgICAg ICBpZiAodmVjdG9yX3NjYWxhcl9zaGlmdCAKKyAgICAgICAgICAgICAgJiYg KChUUkVFX0NPREUgKHJoczIpID09IFZFQ1RPUl9DU1QgJiYgKHZhciA9IHJo czIpKQorICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAg IChUUkVFX0NPREUgKHJoczIpID09IFNTQV9OQU1FIAorICAgICAgICAgICAg ICAgICAgICYmIChkZWZfc3RtdCA9IFNTQV9OQU1FX0RFRl9TVE1UIChyaHMy KSkKKyAgICAgICAgICAgICAgICAgICAmJiBnaW1wbGVfYXNzaWduX3Npbmds ZV9wIChkZWZfc3RtdCkKKyAgICAgICAgICAgICAgICAgICAmJiAodmFyID0g Z2ltcGxlX2Fzc2lnbl9yaHMxIChkZWZfc3RtdCkpKSkKKyAgICAgICAgICAg ICAgJiYgdW5pZm9ybV92ZWN0b3JfcCAodmFyLCAmZmlyc3QpKQorICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGdpbXBsZV9hc3NpZ25f c2V0X3JoczIgKHN0bXQsIGZpcnN0KTsKKyAgICAgICAgICAgICAgICAgIHVw ZGF0ZV9zdG10IChzdG10KTsKKyAgICAgICAgICAgICAgICAgIHJoczIgPSBm aXJzdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgICBvcCA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNvZGUsIHR5 cGUsIG9wdGFiX3ZlY3Rvcik7CisgICAgICAgIH0KKyAgICAKKyAgICAgIC8q IFRyeSBmb3IgYSB2ZWN0b3Ivc2NhbGFyIHNoaWZ0LCBhbmQgaWYgd2UgZG9u J3QgaGF2ZSBvbmUsIHNlZSBpZiB3ZQorICAgICAgICAgaGF2ZSBhIHZlY3Rv ci92ZWN0b3Igc2hpZnQgKi8KKyAgICAgIGVsc2UgaWYgKCF2ZWN0b3Jfc2Nh bGFyX3NoaWZ0KQorICAgICAgICBvcCA9IG9wdGFiX2Zvcl90cmVlX2NvZGUg KGNvZGUsIHR5cGUsIG9wdGFiX3ZlY3Rvcik7CiAgICAgfQogICBlbHNlCiAg ICAgb3AgPSBvcHRhYl9mb3JfdHJlZV9jb2RlIChjb2RlLCB0eXBlLCBvcHRh Yl9kZWZhdWx0KTsKSW5kZXg6IGdjYy9wYXNzZXMuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvcGFzc2VzLmMJKHJldmlzaW9uIDE2NjEyNikK KysrIGdjYy9wYXNzZXMuYwkod29ya2luZyBjb3B5KQpAQCAtNzM2LDcgKzcz Niw2IEBAIGluaXRfb3B0aW1pemF0aW9uX3Bhc3NlcyAodm9pZCkKICAgTkVY VF9QQVNTIChwYXNzX3JlZmFjdG9yX2VoKTsKICAgTkVYVF9QQVNTIChwYXNz X2xvd2VyX2VoKTsKICAgTkVYVF9QQVNTIChwYXNzX2J1aWxkX2NmZyk7Ci0g IE5FWFRfUEFTUyAocGFzc19sb3dlcl92ZWN0b3IpOwogICBORVhUX1BBU1Mg KHBhc3Nfd2Fybl9mdW5jdGlvbl9yZXR1cm4pOwogICBORVhUX1BBU1MgKHBh c3NfYnVpbGRfY2dyYXBoX2VkZ2VzKTsKICAgTkVYVF9QQVNTIChwYXNzX2lu bGluZV9wYXJhbWV0ZXJzKTsKQEAgLTc1NSw2ICs3NTQsNyBAQCBpbml0X29w dGltaXphdGlvbl9wYXNzZXMgKHZvaWQpCiAKICAgICAgIE5FWFRfUEFTUyAo cGFzc19yZWZlcmVuY2VkX3ZhcnMpOwogICAgICAgTkVYVF9QQVNTIChwYXNz X2J1aWxkX3NzYSk7CisgICAgICBORVhUX1BBU1MgKHBhc3NfbG93ZXJfdmVj dG9yKTsKICAgICAgIE5FWFRfUEFTUyAocGFzc19lYXJseV93YXJuX3VuaW5p dGlhbGl6ZWQpOwogICAgICAgLyogTm90ZSB0aGF0IGl0IGlzIG5vdCBzdHJp Y3RseSBuZWNlc3NhcnkgdG8gc2NoZWR1bGUgYW4gZWFybHkKIAkgaW5saW5l IHBhc3MgaGVyZS4gIEhvd2V2ZXIsIHNvbWUgdGVzdCBjYXNlcyAoZS5nLiwK --0016368324e4618cbe049425eca5--