From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 58897 invoked by alias); 17 Jul 2018 14:32:35 -0000 Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org Received: (qmail 58866 invoked by uid 89); 17 Jul 2018 14:32:34 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-9.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPAM_BODY,SPF_PASS autolearn=ham version=3.3.2 spammy=tone, walker, tons, H*i:sk:CAKwh3q X-HELO: mail-yw0-f174.google.com Received: from mail-yw0-f174.google.com (HELO mail-yw0-f174.google.com) (209.85.161.174) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 17 Jul 2018 14:32:32 +0000 Received: by mail-yw0-f174.google.com with SMTP id 139-v6so449785ywg.12; Tue, 17 Jul 2018 07:32:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=8wdZfJDgPeEyU4mbt/db7nfZIic9RSgRgFyAqzHD4DM=; b=kkfK8YL5WEdYoUp9d3qNlJuwOviuGbPxLPM7i6HHXsw/dO8TNmcMHEXJ0K/43G43tv rk7tKHa5baTacHDpjLvWa9hOwJwz0Z0PnOfKzXYzvMRPo9RscnliGV3BNKC7886vlHs/ KRCUzWy9qiOU6T6ou77s6c5yjIei81r0OEjvDO7BOr5es3knyZPnTIkk2MtIs6ZLlQFx XzVpG1DKEzEOcx8zu3XScMGZ3/AV//qC3l1qMTGe4AJFjnyp4MX3AF2PsKmqxp38eC1M Y/aBMFu4bpaGyFRMagnLvjr91bwi9p1IoyaIcL8spunqmjjZbFoh9JLLxETEzGs1wMRt gb0A== MIME-Version: 1.0 Sender: jaydub66@gmail.com Received: by 2002:a0d:ea0c:0:0:0:0:0 with HTTP; Tue, 17 Jul 2018 07:32:29 -0700 (PDT) In-Reply-To: References: <7ce70d80-88ac-f2cb-89cc-d622ac873b9e@netcologne.de> From: Janus Weil Date: Tue, 17 Jul 2018 14:32:00 -0000 Message-ID: Subject: Re: [Patch, Fortran] PR 85599: warn about short-circuiting of logical expressions for non-pure functions To: Thomas Koenig Cc: gfortran , gcc-patches Content-Type: multipart/mixed; boundary="000000000000e62343057132d0aa" X-IsSubscribed: yes X-SW-Source: 2018-07/txt/msg00056.txt.bz2 --000000000000e62343057132d0aa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 1821 2018-07-17 9:52 GMT+02:00 Janus Weil : >> 2018-07-16 21:50 GMT+02:00 Thomas Koenig : >>> What I would suggest is to enable -Wfunction-eliminiation with >>> -Wextra and also use that for your new warning. >> >> Thanks for the comments. Makes sense. Updated patch attached. > > > Huh, after actually trying -Wfunction-elimination, I'm not so sure any > more if it really makes sense to throw the new warnings in there, > mainly for two reasons: > > a) -Wfunction-elimination is slightly different, in that it warns > about removing *any* kind of function, not just impure ones. This > makes it pretty verbose, and I'm not sure why one would need to know > if a pure function call is removed. > b) It gives warnings on places that I don't understand. Simple example: > > subroutine sub(r) > implicit none > real, intent(in) :: r > if ((abs(r) > 1e6) .or. (abs(r) < 1e-6)) then > print *, "rrr" > end if > end > > Compiling this with "gfortran-8 -O1 -Wfunction-elimination" gives me: > > if ((abs(r) > 1e6) .or. (abs(r) < 1e-6)) then > 1 > Warning: Removing call to function =E2=80=98abs=E2=80=99 at (1) [-Wfuncti= on-elimination] > > > Why can I remove the call to ABS there? If I read the dump correctly, > then the two calls to ABS are optimized into a single one, which is > used for both comparisons via a temporary. Is that what the warning is > trying to tell me? And if yes, why should I care (if the function is > pure)? The middle-end certainly does tons of optimizations that > rearrange various expressions, without warning me about it ... > > In other words: Does it make sense to tone down > -Wfunction-elimination, by only warning about impure functions? Here is an update of the patch which does that. Regtesting now ... Cheers, Janus --000000000000e62343057132d0aa Content-Type: text/x-patch; charset="US-ASCII"; name="pr85599_v6.diff" Content-Disposition: attachment; filename="pr85599_v6.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jjpsqi6s0 Content-length: 11200 SW5kZXg6IGdjYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGdjYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJl ZS5jCShyZXZpc2lvbiAyNjI3NjQpCisrKyBnY2MvZm9ydHJhbi9kdW1wLXBh cnNlLXRyZWUuYwkod29ya2luZyBjb3B5KQpAQCAtNzE2LDYgKzcxNiw4IEBA IHNob3dfYXR0ciAoc3ltYm9sX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hh ciAqIG1vCiAgICAgZnB1dHMgKCIgRUxFTUVOVEFMIiwgZHVtcGZpbGUpOwog ICBpZiAoYXR0ci0+cHVyZSkKICAgICBmcHV0cyAoIiBQVVJFIiwgZHVtcGZp bGUpOworICBpZiAoYXR0ci0+aW1wbGljaXRfcHVyZSkKKyAgICBmcHV0cyAo IiBJTVBMSUNJVF9QVVJFIiwgZHVtcGZpbGUpOwogICBpZiAoYXR0ci0+cmVj dXJzaXZlKQogICAgIGZwdXRzICgiIFJFQ1VSU0lWRSIsIGR1bXBmaWxlKTsK IApJbmRleDogZ2NjL2ZvcnRyYW4vZnJvbnRlbmQtcGFzc2VzLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vZnJvbnRlbmQtcGFz c2VzLmMJKHJldmlzaW9uIDI2Mjc2NCkKKysrIGdjYy9mb3J0cmFuL2Zyb250 ZW5kLXBhc3Nlcy5jCSh3b3JraW5nIGNvcHkpCkBAIC04NDAsMTcgKzg0MCwx NyBAQCBjcmVhdGVfdmFyIChnZmNfZXhwciAqIGUsIGNvbnN0IGNoYXIgKnZu YW1lKQogc3RhdGljIHZvaWQKIGRvX3dhcm5fZnVuY3Rpb25fZWxpbWluYXRp b24gKGdmY19leHByICplKQogewotICBpZiAoZS0+ZXhwcl90eXBlICE9IEVY UFJfRlVOQ1RJT04pCi0gICAgcmV0dXJuOwotICBpZiAoZS0+dmFsdWUuZnVu Y3Rpb24uZXN5bSkKLSAgICBnZmNfd2FybmluZyAoT1BUX1dmdW5jdGlvbl9l bGltaW5hdGlvbiwKLQkJICJSZW1vdmluZyBjYWxsIHRvIGZ1bmN0aW9uICVx cyBhdCAlTCIsCi0JCSBlLT52YWx1ZS5mdW5jdGlvbi5lc3ltLT5uYW1lLCAm KGUtPndoZXJlKSk7Ci0gIGVsc2UgaWYgKGUtPnZhbHVlLmZ1bmN0aW9uLmlz eW0pCi0gICAgZ2ZjX3dhcm5pbmcgKE9QVF9XZnVuY3Rpb25fZWxpbWluYXRp b24sCi0JCSAiUmVtb3ZpbmcgY2FsbCB0byBmdW5jdGlvbiAlcXMgYXQgJUwi LAotCQkgZS0+dmFsdWUuZnVuY3Rpb24uaXN5bS0+bmFtZSwgJihlLT53aGVy ZSkpOworICBjb25zdCBjaGFyICpuYW1lOworICBpZiAoZS0+ZXhwcl90eXBl ID09IEVYUFJfRlVOQ1RJT04gJiYgIWdmY19wdXJlX2Z1bmN0aW9uIChlLCAm bmFtZSkgJiYgIWdmY19pbXBsaWNpdF9wdXJlX2Z1bmN0aW9uIChlKSkKKyAg IHsKKyAgICAgIGlmIChuYW1lKQorICAgICAgICAgZ2ZjX3dhcm5pbmcgKE9Q VF9XZnVuY3Rpb25fZWxpbWluYXRpb24sICJSZW1vdmluZyBjYWxsIHRvIGlt cHVyZSBmdW5jdGlvbiAlcXMgYXQgJUwiLCBuYW1lLCAmKGUtPndoZXJlKSk7 CisgICAgICBlbHNlCisgICAgICAgICBnZmNfd2FybmluZyAoT1BUX1dmdW5j dGlvbl9lbGltaW5hdGlvbiwgIlJlbW92aW5nIGNhbGwgdG8gaW1wdXJlIGZ1 bmN0aW9uIGF0ICVMIiwgJihlLT53aGVyZSkpOworICAgfQogfQorCisKIC8q IENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgY29kZSB3YWxrZXIgZm9yIGRv aW5nIGNvbW1vbiBmdW5jdGlvbgogICAgZWxpbWluYXRpb24uICBUaGlzIGJ1 aWxkcyB1cCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgaW4gdGhlIGV4cHJlc3Np b24KICAgIGFuZCBnb2VzIHRocm91Z2ggdGhlbSB0byBkZXRlY3QgZHVwbGlj YXRlcywgd2hpY2ggaXQgdGhlbiByZXBsYWNlcwpJbmRleDogZ2NjL2ZvcnRy YW4vZ2ZvcnRyYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Zm9ydHJhbi9nZm9ydHJhbi5oCShyZXZpc2lvbiAyNjI3NjQpCisrKyBnY2Mv Zm9ydHJhbi9nZm9ydHJhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjc1LDYg KzMyNzUsOCBAQCBib29sIGdmY19yZXNvbHZlX2ludHJpbnNpYyAoZ2ZjX3N5 bWJvbCAqLCBsb2N1cyAqKQogYm9vbCBnZmNfZXhwbGljaXRfaW50ZXJmYWNl X3JlcXVpcmVkIChnZmNfc3ltYm9sICosIGNoYXIgKiwgaW50KTsKIGV4dGVy biBpbnQgZ2ZjX2RvX2NvbmN1cnJlbnRfZmxhZzsKIGNvbnN0IGNoYXIqIGdm Y19sb29rdXBfZnVuY3Rpb25fZnV6enkgKGNvbnN0IGNoYXIgKiwgZ2ZjX3N5 bXRyZWUgKik7CitpbnQgZ2ZjX3B1cmVfZnVuY3Rpb24gKGdmY19leHByICpl LCBjb25zdCBjaGFyICoqbmFtZSk7CitpbnQgZ2ZjX2ltcGxpY2l0X3B1cmVf ZnVuY3Rpb24gKGdmY19leHByICplKTsKIAogCiAvKiBhcnJheS5jICovCklu ZGV4OiBnY2MvZm9ydHJhbi9nZm9ydHJhbi50ZXhpCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy9mb3J0cmFuL2dmb3J0cmFuLnRleGkJKHJldmlz aW9uIDI2Mjc2NCkKKysrIGdjYy9mb3J0cmFuL2dmb3J0cmFuLnRleGkJKHdv cmtpbmcgY29weSkKQEAgLTExNzcsNiArMTE3Nyw3IEBAIG1pZ2h0IGluIHNv bWUgd2F5IG9yIGFub3RoZXIgYmVjb21lIHZpc2libGUgdG8gdGhlCiBAbWVu dQogKiBLSU5EIFR5cGUgUGFyYW1ldGVyczo6CiAqIEludGVybmFsIHJlcHJl c2VudGF0aW9uIG9mIExPR0lDQUwgdmFyaWFibGVzOjoKKyogRXZhbHVhdGlv biBvZiBsb2dpY2FsIGV4cHJlc3Npb25zOjoKICogVGhyZWFkLXNhZmV0eSBv ZiB0aGUgcnVudGltZSBsaWJyYXJ5OjoKICogRGF0YSBjb25zaXN0ZW5jeSBh bmQgZHVyYWJpbGl0eTo6CiAqIEZpbGVzIG9wZW5lZCB3aXRob3V0IGFuIGV4 cGxpY2l0IEFDVElPTj0gc3BlY2lmaWVyOjoKQEAgLTEyNTEsNiArMTI1Miwx OSBAQCB2YWx1ZXM6IEBjb2RlezF9IGZvciBAY29kZXsuVFJVRS59IGFuZCBA Y29kZXswfSBmbwogU2VlIGFsc28gQHJlZntBcmd1bWVudCBwYXNzaW5nIGNv bnZlbnRpb25zfSBhbmQgQHJlZntJbnRlcm9wZXJhYmlsaXR5IHdpdGggQ30u CiAKIAorQG5vZGUgRXZhbHVhdGlvbiBvZiBsb2dpY2FsIGV4cHJlc3Npb25z CitAc2VjdGlvbiBFdmFsdWF0aW9uIG9mIGxvZ2ljYWwgZXhwcmVzc2lvbnMK KworVGhlIEZvcnRyYW4gc3RhbmRhcmQgZG9lcyBub3QgcmVxdWlyZSB0aGUg Y29tcGlsZXIgdG8gZXZhbHVhdGUgYWxsIHBhcnRzIG9mIGFuCitleHByZXNz aW9uLCBpZiB0aGV5IGRvIG5vdCBjb250cmlidXRlIHRvIHRoZSBmaW5hbCBy ZXN1bHQuIEZvciBsb2dpY2FsCitleHByZXNzaW9ucyB3aXRoIEBjb2Rley5B TkQufSBvciBAY29kZXsuT1IufSBvcGVyYXRvcnMsIGluIHBhcnRpY3VsYXIs IEdOVQorRm9ydHJhbiB3aWxsIG9wdGltaXplIG91dCBmdW5jdGlvbiBjYWxs cyAoZXZlbiB0byBpbXB1cmUgZnVuY3Rpb25zKSBpZiB0aGUKK3Jlc3VsdCBv ZiB0aGUgZXhwcmVzc2lvbiBjYW4gYmUgZXN0YWJsaXNoZWQgd2l0aG91dCB0 aGVtLiBIb3dldmVyLCBzaW5jZSBub3QKK2FsbCBjb21waWxlcnMgZG8gdGhh dCwgYW5kIHN1Y2ggYW4gb3B0aW1pemF0aW9uIGNhbiBwb3RlbnRpYWxseSBt b2RpZnkgdGhlCitwcm9ncmFtIGZsb3cgYW5kIHN1YnNlcXVlbnQgcmVzdWx0 cywgR05VIEZvcnRyYW4gdGhyb3dzIHdhcm5pbmdzIGZvciBzdWNoCitzaXR1 YXRpb25zIHdpdGggdGhlIEBvcHRpb257LVdmdW5jdGlvbi1lbGltaW5hdGlv bn0gZmxhZy4KKworCiBAbm9kZSBUaHJlYWQtc2FmZXR5IG9mIHRoZSBydW50 aW1lIGxpYnJhcnkKIEBzZWN0aW9uIFRocmVhZC1zYWZldHkgb2YgdGhlIHJ1 bnRpbWUgbGlicmFyeQogQGNpbmRleCB0aHJlYWQtc2FmZXR5LCB0aHJlYWRz CkluZGV4OiBnY2MvZm9ydHJhbi9pbnZva2UudGV4aQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi9pbnZva2UudGV4aQkocmV2aXNp b24gMjYyNzY0KQorKysgZ2NjL2ZvcnRyYW4vaW52b2tlLnRleGkJKHdvcmtp bmcgY29weSkKQEAgLTEwNTgsNiArMTA1OCw3IEBAIG9mZiB2aWEgQG9wdGlv bnstV25vLWFsaWduLWNvbW1vbnN9LiBTZWUgYWxzbyBAb3B0CiBAY2luZGV4 IHdhcm5pbmdzLCBmdW5jdGlvbiBlbGltaW5hdGlvbgogV2FybiBpZiBhbnkg Y2FsbHMgdG8gZnVuY3Rpb25zIGFyZSBlbGltaW5hdGVkIGJ5IHRoZSBvcHRp bWl6YXRpb25zCiBlbmFibGVkIGJ5IHRoZSBAb3B0aW9uey1mZnJvbnRlbmQt b3B0aW1pemV9IG9wdGlvbi4KK1RoaXMgb3B0aW9uIGlzIGltcGxpZWQgYnkg QG9wdGlvbnstV2V4dHJhfS4KIAogQGl0ZW0gLVdyZWFsbG9jLWxocwogQG9w aW5kZXggQGNvZGV7V3JlYWxsb2MtbGhzfQpJbmRleDogZ2NjL2ZvcnRyYW4v bGFuZy5vcHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRy YW4vbGFuZy5vcHQJKHJldmlzaW9uIDI2Mjc2NCkKKysrIGdjYy9mb3J0cmFu L2xhbmcub3B0CSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcgQEAg Rm9ydHJhbiBWYXIoZmxhZ193YXJuX2Zyb250ZW5kX2xvb3BfaW50ZXJjaGFu Z2UpCiBXYXJuIGlmIGxvb3BzIGhhdmUgYmVlbiBpbnRlcmNoYW5nZWQuCiAK IFdmdW5jdGlvbi1lbGltaW5hdGlvbgotRm9ydHJhbiBXYXJuaW5nIFZhcih3 YXJuX2Z1bmN0aW9uX2VsaW1pbmF0aW9uKQorRm9ydHJhbiBXYXJuaW5nIFZh cih3YXJuX2Z1bmN0aW9uX2VsaW1pbmF0aW9uKSBMYW5nRW5hYmxlZEJ5KEZv cnRyYW4sV2V4dHJhKQogV2FybiBhYm91dCBmdW5jdGlvbiBjYWxsIGVsaW1p bmF0aW9uLgogCiBXaW1wbGljaXQtaW50ZXJmYWNlCkluZGV4OiBnY2MvZm9y dHJhbi9yZXNvbHZlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L2ZvcnRyYW4vcmVzb2x2ZS5jCShyZXZpc2lvbiAyNjI3NjQpCisrKyBnY2Mv Zm9ydHJhbi9yZXNvbHZlLmMJKHdvcmtpbmcgY29weSkKQEAgLTI5NDEsOCAr Mjk0MSw4IEBAIGlzX2V4dGVybmFsX3Byb2MgKGdmY19zeW1ib2wgKnN5bSkK IHN0YXRpYyBpbnQKIHB1cmVfc3RtdF9mdW5jdGlvbiAoZ2ZjX2V4cHIgKiwg Z2ZjX3N5bWJvbCAqKTsKIAotc3RhdGljIGludAotcHVyZV9mdW5jdGlvbiAo Z2ZjX2V4cHIgKmUsIGNvbnN0IGNoYXIgKipuYW1lKQoraW50CitnZmNfcHVy ZV9mdW5jdGlvbiAoZ2ZjX2V4cHIgKmUsIGNvbnN0IGNoYXIgKipuYW1lKQog ewogICBpbnQgcHVyZTsKICAgZ2ZjX2NvbXBvbmVudCAqY29tcDsKQEAgLTI5 ODIsNiArMjk4MiwyMSBAQCBwdXJlX3N0bXRfZnVuY3Rpb24gKGdmY19leHBy ICosIGdmY19zeW1ib2wgKik7CiB9CiAKIAorLyogQ2hlY2sgaWYgdGhlIGV4 cHJlc3Npb24gaXMgYSByZWZlcmVuY2UgdG8gYW4gaW1wbGljaXRseSBwdXJl IGZ1bmN0aW9uLiAgKi8KKworaW50CitnZmNfaW1wbGljaXRfcHVyZV9mdW5j dGlvbiAoZ2ZjX2V4cHIgKmUpCit7CisgIGdmY19jb21wb25lbnQgKmNvbXAg PSBnZmNfZ2V0X3Byb2NfcHRyX2NvbXAgKGUpOworICBpZiAoY29tcCkKKyAg ICByZXR1cm4gZ2ZjX2ltcGxpY2l0X3B1cmUgKGNvbXAtPnRzLmludGVyZmFj ZSk7CisgIGVsc2UgaWYgKGUtPnZhbHVlLmZ1bmN0aW9uLmVzeW0pCisgICAg cmV0dXJuIGdmY19pbXBsaWNpdF9wdXJlIChlLT52YWx1ZS5mdW5jdGlvbi5l c3ltKTsKKyAgZWxzZQorICAgIHJldHVybiAwOworfQorCisKIHN0YXRpYyBi b29sCiBpbXB1cmVfc3RtdF9mY24gKGdmY19leHByICplLCBnZmNfc3ltYm9s ICpzeW0sCiAJCSBpbnQgKmYgQVRUUklCVVRFX1VOVVNFRCkKQEAgLTI5OTYs NyArMzAxMSw3IEBAIGltcHVyZV9zdG10X2ZjbiAoZ2ZjX2V4cHIgKmUsIGdm Y19zeW1ib2wgKnN5bSwKIAl8fCBlLT5zeW10cmVlLT5uLnN5bS0+YXR0ci5w cm9jID09IFBST0NfU1RfRlVOQ1RJT04pCiAgICAgcmV0dXJuIGZhbHNlOwog Ci0gIHJldHVybiBwdXJlX2Z1bmN0aW9uIChlLCAmbmFtZSkgPyBmYWxzZSA6 IHRydWU7CisgIHJldHVybiBnZmNfcHVyZV9mdW5jdGlvbiAoZSwgJm5hbWUp ID8gZmFsc2UgOiB0cnVlOwogfQogCiAKQEAgLTMwMTIsNyArMzAyNyw3IEBA IHB1cmVfc3RtdF9mdW5jdGlvbiAoZ2ZjX2V4cHIgKmUsIGdmY19zeW1ib2wg KnN5bSkKIHN0YXRpYyBib29sIGNoZWNrX3B1cmVfZnVuY3Rpb24gKGdmY19l eHByICplKQogewogICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAgaWYg KCFwdXJlX2Z1bmN0aW9uIChlLCAmbmFtZSkgJiYgbmFtZSkKKyAgaWYgKCFn ZmNfcHVyZV9mdW5jdGlvbiAoZSwgJm5hbWUpICYmIG5hbWUpCiAgICAgewog ICAgICAgaWYgKGZvcmFsbF9mbGFnKQogCXsKQEAgLTMwMzQsNyArMzA0OSw4 IEBAIHN0YXRpYyBib29sIGNoZWNrX3B1cmVfZnVuY3Rpb24gKGdmY19leHBy ICplKQogCQkgICAgICJ3aXRoaW4gYSBQVVJFIHByb2NlZHVyZSIsIG5hbWUs ICZlLT53aGVyZSk7CiAJICByZXR1cm4gZmFsc2U7CiAJfQotICAgICAgZ2Zj X3Vuc2V0X2ltcGxpY2l0X3B1cmUgKE5VTEwpOworICAgICAgaWYgKCFnZmNf aW1wbGljaXRfcHVyZV9mdW5jdGlvbiAoZSkpCisJZ2ZjX3Vuc2V0X2ltcGxp Y2l0X3B1cmUgKE5VTEwpOwogICAgIH0KICAgcmV0dXJuIHRydWU7CiB9CkBA IC0zODIyLDYgKzM4MzgsNDAgQEAgbG9va3VwX3VvcF9mdXp6eSAoY29uc3Qg Y2hhciAqb3AsIGdmY19zeW10cmVlICp1b3AKIH0KIAogCisvKiBDYWxsYmFj ayBmaW5kaW5nIGFuIGltcHVyZSBmdW5jdGlvbiBhcyBhbiBvcGVyYW5kIHRv IGFuIC5hbmQuIG9yCisgICAub3IuICBleHByZXNzaW9uLiAgUmVtZW1iZXIg dGhlIGxhc3QgZnVuY3Rpb24gd2FybmVkIGFib3V0IHRvCisgICBhdm9pZCBk b3VibGUgd2FybmluZ3Mgd2hlbiByZWN1cnNpbmcuICAqLworCitzdGF0aWMg aW50CitpbXB1cmVfZnVuY3Rpb25fY2FsbGJhY2sgKGdmY19leHByICoqZSwg aW50ICp3YWxrX3N1YnRyZWVzIEFUVFJJQlVURV9VTlVTRUQsCisJCQkgIHZv aWQgKmRhdGEpCit7CisgIGdmY19leHByICpmID0gKmU7CisgIGNvbnN0IGNo YXIgKm5hbWU7CisgIHN0YXRpYyBnZmNfZXhwciAqbGFzdCA9IE5VTEw7Cisg IGJvb2wgKmZvdW5kID0gKGJvb2wgKikgZGF0YTsKKworICBpZiAoZi0+ZXhw cl90eXBlID09IEVYUFJfRlVOQ1RJT04pCisgICAgeworICAgICAgKmZvdW5k ID0gMTsKKyAgICAgIGlmIChmICE9IGxhc3QgJiYgIWdmY19wdXJlX2Z1bmN0 aW9uIChmLCAmbmFtZSkgJiYgIWdmY19pbXBsaWNpdF9wdXJlX2Z1bmN0aW9u IChmKSkKKwl7CisJICBpZiAobmFtZSkKKwkgICAgZ2ZjX3dhcm5pbmcgKE9Q VF9XZnVuY3Rpb25fZWxpbWluYXRpb24sCisJCQkgIkltcHVyZSBmdW5jdGlv biAlcXMgYXQgJUwgbWlnaHQgbm90IGJlIGV2YWx1YXRlZCIsCisJCQkgbmFt ZSwgJmYtPndoZXJlKTsKKwkgIGVsc2UKKwkgICAgZ2ZjX3dhcm5pbmcgKE9Q VF9XZnVuY3Rpb25fZWxpbWluYXRpb24sCisJCQkgIkltcHVyZSBmdW5jdGlv biBhdCAlTCBtaWdodCBub3QgYmUgZXZhbHVhdGVkIiwKKwkJCSAmZi0+d2hl cmUpOworCX0KKyAgICAgIGxhc3QgPSBmOworICAgIH0KKworICByZXR1cm4g MDsKK30KKworCiAvKiBSZXNvbHZlIGFuIG9wZXJhdG9yIGV4cHJlc3Npb24g bm9kZS4gIFRoaXMgY2FuIGludm9sdmUgcmVwbGFjaW5nIHRoZQogICAgb3Bl cmF0aW9uIHdpdGggYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24gY2FsbC4gICov CiAKQEAgLTM5MzAsNiArMzk4MCwxNCBAQCByZXNvbHZlX29wZXJhdG9yIChn ZmNfZXhwciAqZSkKIAkgICAgZ2ZjX2NvbnZlcnRfdHlwZSAob3AxLCAmZS0+ dHMsIDIpOwogCSAgZWxzZSBpZiAob3AyLT50cy5raW5kIDwgZS0+dHMua2lu ZCkKIAkgICAgZ2ZjX2NvbnZlcnRfdHlwZSAob3AyLCAmZS0+dHMsIDIpOwor CisJICBpZiAoZS0+dmFsdWUub3Aub3AgPT0gSU5UUklOU0lDX0FORCB8fCBl LT52YWx1ZS5vcC5vcCA9PSBJTlRSSU5TSUNfT1IpCisJICAgIHsKKwkgICAg ICAvKiBXYXJuIGFib3V0IHNob3J0LWNpcmN1aXRpbmcKKwkgICAgICAgICB3 aXRoIGltcHVyZSBmdW5jdGlvbiBhcyBzZWNvbmQgb3BlcmFuZC4gICovCisJ ICAgICAgYm9vbCBvcDJfZiA9IGZhbHNlOworCSAgICAgIGdmY19leHByX3dh bGtlciAoJm9wMiwgaW1wdXJlX2Z1bmN0aW9uX2NhbGxiYWNrLCAmb3AyX2Yp OworCSAgICB9CiAJICBicmVhazsKIAl9CiAK --000000000000e62343057132d0aa--