From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by sourceware.org (Postfix) with ESMTPS id D01493858D20; Fri, 12 Jan 2024 19:23:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D01493858D20 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D01493858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705087407; cv=none; b=bM0lHRWV7d6kuHBy+TEr5GxXlXmU7thFqkI4+h/W523FfXOh8wK1viwTKgkUi57/ZXW8vDPW0lNTNKAWFiHRsxVmtmHkwNYB3kkHwW2yXnMoLzXOFWFVawmhJC8vO8hVmJyoGxzmIDzw7EyigI/XSivvkkUkMS6YFilA08dpcTk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705087407; c=relaxed/simple; bh=5mU9scLwnRQ7AIfT1ohD41zMY3JgA1pU+kIailB/EJ8=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=Atr36r29bDkSodOPZ6CI6QcPjFc7KlfzclXCRQ/KJC7+AquTfrfNPnXjWmVV1OmoR82pD1V48R8E0Ea3W4rFmA/a54qR6DAVyo1zghj+zHVMlMIz3fEZYSgDGgDU7lukWrRvi0Gex0VJevmi4VudagZXjBQ2cFTwMkaL8tnuvgo= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1705087401; x=1705692201; i=anlauf@gmx.de; bh=5mU9scLwnRQ7AIfT1ohD41zMY3JgA1pU+kIailB/EJ8=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From: In-Reply-To; b=c/nuYtH7aMYCbYnhm3IStGUZyZ5Uw74NYOg+fEryhEezi09Dvs5vtrjOWHR6r7zt N6UTKqJf0cZ0B/Nx9FgG4mNqFMwrBJ1xbQeaAVV0dsUivZgaxBr/SepBXrU9Q077W tyugivbHfv39bRF3OQEzMTx8NvKxu7BiMLQkEUKbZLWZZifzSoOxrt1cpz+A2k6lf 2fE4sW1ykAnVRkkuXQZ6VW8NznCv5o6iHfIKlLC4xS98yL0LFLgSf+R8jL4Pf2LgS FU9+AY8MJSxXLDpet+LcI0DBsaqieSKsm4lwxn7eI81rqZPsUPgEuCG/fHiN/UFDj m0HusWIZtzjcko9/Ng== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.178.29] ([93.207.82.35]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MNt0C-1rmdAv0kyO-00OK58; Fri, 12 Jan 2024 20:23:21 +0100 Content-Type: multipart/mixed; boundary="------------0G9FYSX2HUx7FPyDFK4f0lG0" Message-ID: <5ccdd809-5483-42df-8cc2-965584285ecf@gmx.de> Date: Fri, 12 Jan 2024 20:23:20 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH, v2] Fortran: annotations for DO CONCURRENT loops [PR113305] To: Bernhard Reutner-Fischer Cc: fortran , gcc-patches Newsgroups: gmane.comp.gcc.patches,gmane.comp.gcc.fortran References: <20240112104432.3466b1e9@nbbrfq.loc> Content-Language: en-US From: Harald Anlauf In-Reply-To: <20240112104432.3466b1e9@nbbrfq.loc> X-Provags-ID: V03:K1:MnoGVAcPFIWe4S9nLZYSiKCRDJiLzBuXAjX2csnTb0m//r7NGrQ Ygvczw3nNwGgtymnxHhQwTn4CaCRKTUa2g79k6kpIyBcRPZrbmi5f7/PZyeAHuAn4VTVmdt dlr18RkZuzITQzHArkA1il+3x5THqbyPxot7pCNBGdRO2DqeTzNd0T3YmmAKfYJvixLh7vj PISVxR+VJUbnFLFgwtR+w== UI-OutboundReport: notjunk:1;M01:P0:vCQxwhBe20E=;3L+EWv9kw/sGxQ3ep1d/lNYiyZF BvdQRdZxHgTR/NoX+gcKxRENiHrYCTd/eDZq0JeM2rZVw1FMXZ3ylaPzGBhbqtPWrDqe3U+Jk CjWZRs++LrEhqxhwXWABuz97rWcphXwBvKZkXlsHaheh1YuG5Dh1ubLiSo6jokQ4iaUSkxUCb 8RlsuzOhz0VeFyn1bypespIWS3VyMd4M+/rr3WhGYo5fYermG8Mfnk4co4Cds4q96rqTA/hsS ysFGFylKIdY+CM4EKj6pH4pGA6oOBqm2HZu2r7mpV2wZfkCRuoOpdr6UPq9lbb5U0G6NXFfY6 ExakK9OCGO78HFh9fYxM97JrCd/ucgaakwZM6E6lMpS5lGvXq88ByCN2aUkyg0hu3YUdxhMdX 9dCVpVap2cp1podTXOJxNmyWoeYwz0b94D0YkFARkINfV4fo7gdahmSZQ/EIpOZOK6K3iUNIU 6Y77hteo0/7B6PBPcDp+aIvSL2vUmFjDZ7ht+juG/SmAO/rR7y07beov7wao4ijAqTHt4XDPG yf18xvkyOE4dCq+4u/DWFPtXwiZJPLNJrenb920LyJGB3a9hT5E1+ohkYGApmcRdABwsgAcA3 05W6pjpe5Lp4ARVT4lGgK4s/38llMB4pmhT6NkZlj5qIw6nEzcbFH/YmYarKnZ2SoKKYFdAFW 10sOWxPeX26HpBIqgG4XOhceOcXb+rgxdNeurUnN0uqZQjQtmJRmP81N0X4K/ejyxRPa0hcIW hQWycDAfc/7wrMB2zmfM9DAS/51+XPILDBMBkteuMeXkRB43z3L41QOgZu5sKep25f/kMX9+9 GzZpDOpy/c4WOVglsVR4UTk2tXwBaD2qOJlFkslW1AiyYHYBpqWpfpWjwEgjnzFC8GGSh+WYS IS0YoF+3JTChcVgVv+KCUoPSPSFdRQFKmUgevrE2OKCxKliDCeVIQzDL4NPf/nrsWSwm49F2w CeBUIw== X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,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: This is a multi-part message in MIME format. --------------0G9FYSX2HUx7FPyDFK4f0lG0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi Bernhard, On 1/12/24 10:44, Bernhard Reutner-Fischer wrote: > On Wed, 10 Jan 2024 23:24:22 +0100 > Harald Anlauf wrote: > >> diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h >> index 82f388c05f8..88502c1e3f0 100644 >> --- a/gcc/fortran/gfortran.h >> +++ b/gcc/fortran/gfortran.h >> @@ -2926,6 +2926,10 @@ gfc_dt; >> typedef struct gfc_forall_iterator >> { >> gfc_expr *var, *start, *end, *stride; >> + unsigned short unroll; >> + bool ivdep; >> + bool vector; >> + bool novector; >> struct gfc_forall_iterator *next; >> } > [] >> diff --git a/gcc/fortran/trans-stmt.cc b/gcc/fortran/trans-stmt.cc >> index a718dce237f..59a9cf99f9b 100644 >> --- a/gcc/fortran/trans-stmt.cc >> +++ b/gcc/fortran/trans-stmt.cc >> @@ -41,6 +41,10 @@ typedef struct iter_info >> tree start; >> tree end; >> tree step; >> + unsigned short unroll; >> + bool ivdep; >> + bool vector; >> + bool novector; >> struct iter_info *next; >> } > > Given that we already have in gfortran.h > >> typedef struct >> { >> gfc_expr *var, *start, *end, *step; >> unsigned short unroll; >> bool ivdep; >> bool vector; >> bool novector; >> } >> gfc_iterator; > > would it make sense to break out these loop annotation flags into its > own let's say struct gfc_iterator_flags and use pointers to that flags > instead? I've created a struct gfc_loop_annot and use that directly as I think using pointers to it is probably not very efficient. Well, the struct is smaller than a pointer on a 64-bit system... > LGTM otherwise. > Thanks for the patch! Thanks for the review! If there are no further comments, I'll commit the attached version soon. Harald --------------0G9FYSX2HUx7FPyDFK4f0lG0 Content-Type: text/x-patch; charset=UTF-8; name="pr113305-v2.diff" Content-Disposition: attachment; filename="pr113305-v2.diff" Content-Transfer-Encoding: base64 RnJvbSAzMWQ4OTU3YTk1NDU1NjYzNTc3YTBlNjAxMDk2NzlkNTZhYWMyMzRkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBGcmksIDEyIEphbiAyMDI0IDE5OjUxOjExICswMTAwClN1YmplY3Q6IFtQQVRDSF0g Rm9ydHJhbjogYW5ub3RhdGlvbnMgZm9yIERPIENPTkNVUlJFTlQgbG9vcHMgW1BSMTEzMzA1 XQoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCVBSIGZvcnRyYW4vMTEzMzA1CgkqIGdmb3J0 cmFuLmggKGdmY19sb29wX2Fubm90KTogTmV3LgoJKGdmY19pdGVyYXRvciwgZ2ZjX2ZvcmFs bF9pdGVyYXRvcik6IFVzZSBmb3IgYW5ub3RhdGlvbiBjb250cm9sLgoJKiBhcnJheS5jYyAo Z2ZjX2NvcHlfaXRlcmF0b3IpOiBBZGp1c3QuCgkqIGdmb3J0cmFuLnRleGk6IERvY3VtZW50 IGFubm90YXRpb25zIElWREVQLCBVTlJPTEwgbiwgVkVDVE9SLAoJTk9WRUNUT1IgYXMgYXBw bGllZCB0byBETyBDT05DVVJSRU5ULgoJKiBwYXJzZS5jYyAocGFyc2VfZG9fYmxvY2spOiBQ YXJzZSBhbm5vdGF0aW9ucyBJVkRFUCwgVU5ST0xMIG4sCglWRUNUT1IsIE5PVkVDVE9SIGFz IGFwcGxpZWQgdG8gRE8gQ09OQ1VSUkVOVC4gIEFwcGx5IFVOUk9MTCBvbmx5IHRvCglmaXJz dCBsb29wIGNvbnRyb2wgdmFyaWFibGUuCgkqIHRyYW5zLXN0bXQuY2MgKGl0ZXJfaW5mbyk6 IFVzZSBnZmNfbG9vcF9hbm5vdC4KCShnZmNfdHJhbnNfc2ltcGxlX2RvKTogQWRqdXN0LgoJ KGdmY190cmFuc19mb3JhbGxfbG9vcCk6IEFubm90YXRlIGxvb3BzIHdpdGggSVZERVAsIFVO Uk9MTCBuLAoJVkVDVE9SLCBOT1ZFQ1RPUiBhcyBuZWVkZWQgZm9yIERPIENPTkNVUlJFTlQu CgkoZ2ZjX3RyYW5zX2ZvcmFsbF8xKTogSGFuZGxlIGxvb3AgYW5ub3RhdGlvbnMuCgpnY2Mv dGVzdHN1aXRlL0NoYW5nZUxvZzoKCglQUiBmb3J0cmFuLzExMzMwNQoJKiBnZm9ydHJhbi5k Zy9kb19jb25jdXJyZW50XzcuZjkwOiBOZXcgdGVzdC4KLS0tCiBnY2MvZm9ydHJhbi9hcnJh eS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArLQogZ2NjL2ZvcnRyYW4vZ2Zv cnRyYW4uaCAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEgKysrKy0KIGdjYy9mb3J0cmFu L2dmb3J0cmFuLnRleGkgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrCiBnY2MvZm9y dHJhbi9wYXJzZS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysr KystLQogZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5jYyAgICAgICAgICAgICAgICAgICAgIHwg NDYgKysrKysrKysrKysrKystLS0tLQogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kb19j b25jdXJyZW50XzcuZjkwIHwgMjYgKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTEz IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZG9fY29uY3VycmVudF83LmY5MAoKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL2FycmF5LmNjIGIvZ2NjL2ZvcnRyYW4vYXJyYXkuY2MKaW5kZXgg MTk0NTZiYWYxMDMuLjgxZmE5OWQyMTlmIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9hcnJh eS5jYworKysgYi9nY2MvZm9ydHJhbi9hcnJheS5jYwpAQCAtMjMwOCwxMCArMjMwOCw3IEBA IGdmY19jb3B5X2l0ZXJhdG9yIChnZmNfaXRlcmF0b3IgKnNyYykKICAgZGVzdC0+c3RhcnQg PSBnZmNfY29weV9leHByIChzcmMtPnN0YXJ0KTsKICAgZGVzdC0+ZW5kID0gZ2ZjX2NvcHlf ZXhwciAoc3JjLT5lbmQpOwogICBkZXN0LT5zdGVwID0gZ2ZjX2NvcHlfZXhwciAoc3JjLT5z dGVwKTsKLSAgZGVzdC0+dW5yb2xsID0gc3JjLT51bnJvbGw7Ci0gIGRlc3QtPml2ZGVwID0g c3JjLT5pdmRlcDsKLSAgZGVzdC0+dmVjdG9yID0gc3JjLT52ZWN0b3I7Ci0gIGRlc3QtPm5v dmVjdG9yID0gc3JjLT5ub3ZlY3RvcjsKKyAgZGVzdC0+YW5ub3QgPSBzcmMtPmFubm90Owog CiAgIHJldHVybiBkZXN0OwogfQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4u aCBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKaW5kZXggODJmMzg4YzA1ZjguLmZkNzNlNGNl NDMxIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCisrKyBiL2djYy9mb3J0 cmFuL2dmb3J0cmFuLmgKQEAgLTI4MzAsMTQgKzI4MzAsMjIgQEAgZ2ZjX2Nhc2U7CiAjZGVm aW5lIGdmY19nZXRfY2FzZSgpIFhDTkVXIChnZmNfY2FzZSkKIAogCisvKiBBbm5vdGF0aW9u cyBmb3IgbG9vcCBjb25zdHJ1Y3RzLiAgKi8KIHR5cGVkZWYgc3RydWN0CiB7Ci0gIGdmY19l eHByICp2YXIsICpzdGFydCwgKmVuZCwgKnN0ZXA7CiAgIHVuc2lnbmVkIHNob3J0IHVucm9s bDsKICAgYm9vbCBpdmRlcDsKICAgYm9vbCB2ZWN0b3I7CiAgIGJvb2wgbm92ZWN0b3I7CiB9 CitnZmNfbG9vcF9hbm5vdDsKKworCit0eXBlZGVmIHN0cnVjdAoreworICBnZmNfZXhwciAq dmFyLCAqc3RhcnQsICplbmQsICpzdGVwOworICBnZmNfbG9vcF9hbm5vdCBhbm5vdDsKK30K IGdmY19pdGVyYXRvcjsKIAogI2RlZmluZSBnZmNfZ2V0X2l0ZXJhdG9yKCkgWENORVcgKGdm Y19pdGVyYXRvcikKQEAgLTI5MjYsNiArMjkzNCw3IEBAIGdmY19kdDsKIHR5cGVkZWYgc3Ry dWN0IGdmY19mb3JhbGxfaXRlcmF0b3IKIHsKICAgZ2ZjX2V4cHIgKnZhciwgKnN0YXJ0LCAq ZW5kLCAqc3RyaWRlOworICBnZmNfbG9vcF9hbm5vdCBhbm5vdDsKICAgc3RydWN0IGdmY19m b3JhbGxfaXRlcmF0b3IgKm5leHQ7CiB9CiBnZmNfZm9yYWxsX2l0ZXJhdG9yOwpkaWZmIC0t Z2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4udGV4aSBiL2djYy9mb3J0cmFuL2dmb3J0cmFu LnRleGkKaW5kZXggNTYxNWZlZTI4OTcuLjM3MTY2NmRjYmI2IDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi9nZm9ydHJhbi50ZXhpCisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLnRleGkK QEAgLTMyNjIsNiArMzI2Miw5IEBAIEl0IG11c3QgYmUgcGxhY2VkIGltbWVkaWF0ZWx5IGJl Zm9yZSBhIEBjb2Rle0RPfSBsb29wIGFuZCBhcHBsaWVzIG9ubHkgdG8gdGhlCiBsb29wIHRo YXQgZm9sbG93cy4gIE4gaXMgYW4gaW50ZWdlciBjb25zdGFudCBzcGVjaWZ5aW5nIHRoZSB1 bnJvbGxpbmcgZmFjdG9yLgogVGhlIHZhbHVlcyBvZiAwIGFuZCAxIGJsb2NrIGFueSB1bnJv bGxpbmcgb2YgdGhlIGxvb3AuCiAKK0ZvciBAY29kZXtETyBDT05DVVJSRU5UfSBjb25zdHJ1 Y3RzIHRoZSB1bnJvbGxpbmcgc3BlY2lmaWNhdGlvbiBhcHBsaWVzCitvbmx5IHRvIHRoZSBm aXJzdCBsb29wIGNvbnRyb2wgdmFyaWFibGUuCisKIAogQG5vZGUgQlVJTFRJTiBkaXJlY3Rp dmUKIEBzdWJzZWN0aW9uIEJVSUxUSU4gZGlyZWN0aXZlCkBAIC0zMzAwLDYgKzMzMDMsOSBA QCB3aGV0aGVyIGEgcGFydGljdWxhciBsb29wIGlzIHZlY3Rvcml6YWJsZSBkdWUgdG8gcG90 ZW50aWFsCiBkZXBlbmRlbmNpZXMgYmV0d2VlbiBpdGVyYXRpb25zLiAgVGhlIHB1cnBvc2Ug b2YgdGhlIGRpcmVjdGl2ZSBpcyB0bwogdGVsbCB0aGUgY29tcGlsZXIgdGhhdCB2ZWN0b3Jp emF0aW9uIGlzIHNhZmUuCiAKK0ZvciBAY29kZXtETyBDT05DVVJSRU5UfSBjb25zdHJ1Y3Rz IHRoaXMgYW5ub3RhdGlvbiBpcyBpbXBsaWNpdCB0byBhbGwKK2xvb3AgY29udHJvbCB2YXJp YWJsZXMuCisKIFRoaXMgZGlyZWN0aXZlIGlzIGludGVuZGVkIGZvciBhbm5vdGF0aW9uIG9m IGV4aXN0aW5nIGNvZGUuICBGb3IgbmV3CiBjb2RlIGl0IGlzIHJlY29tbWVuZGVkIHRvIGNv bnNpZGVyIE9wZW5NUCBTSU1EIGRpcmVjdGl2ZXMgYXMgcG90ZW50aWFsCiBhbHRlcm5hdGl2 ZS4KQEAgLTMzMTYsNiArMzMyMiw5IEBAIFRoaXMgZGlyZWN0aXZlIHRlbGxzIHRoZSBjb21w aWxlciB0byB2ZWN0b3JpemUgdGhlIGZvbGxvd2luZyBsb29wLiAgSXQKIG11c3QgYmUgcGxh Y2VkIGltbWVkaWF0ZWx5IGJlZm9yZSBhIEBjb2Rle0RPfSBsb29wIGFuZCBhcHBsaWVzIG9u bHkgdG8KIHRoZSBsb29wIHRoYXQgZm9sbG93cy4KIAorRm9yIEBjb2Rle0RPIENPTkNVUlJF TlR9IGNvbnN0cnVjdHMgdGhpcyBhbm5vdGF0aW9uIGFwcGxpZXMgdG8gYWxsIGxvb3BzCitz cGVjaWZpZWQgaW4gdGhlIGNvbmN1cnJlbnQgaGVhZGVyLgorCiAKIEBub2RlIE5PVkVDVE9S IGRpcmVjdGl2ZQogQHN1YnNlY3Rpb24gTk9WRUNUT1IgZGlyZWN0aXZlCkBAIC0zMzI4LDYg KzMzMzcsOSBAQCBUaGlzIGRpcmVjdGl2ZSB0ZWxscyB0aGUgY29tcGlsZXIgdG8gbm90IHZl Y3Rvcml6ZSB0aGUgZm9sbG93aW5nIGxvb3AuCiBJdCBtdXN0IGJlIHBsYWNlZCBpbW1lZGlh dGVseSBiZWZvcmUgYSBAY29kZXtET30gbG9vcCBhbmQgYXBwbGllcyBvbmx5CiB0byB0aGUg bG9vcCB0aGF0IGZvbGxvd3MuCiAKK0ZvciBAY29kZXtETyBDT05DVVJSRU5UfSBjb25zdHJ1 Y3RzIHRoaXMgYW5ub3RhdGlvbiBhcHBsaWVzIHRvIGFsbCBsb29wcworc3BlY2lmaWVkIGlu IHRoZSBjb25jdXJyZW50IGhlYWRlci4KKwogCiBAbm9kZSBOb24tRm9ydHJhbiBNYWluIFBy b2dyYW0KIEBzZWN0aW9uIE5vbi1Gb3J0cmFuIE1haW4gUHJvZ3JhbQpkaWZmIC0tZ2l0IGEv Z2NjL2ZvcnRyYW4vcGFyc2UuY2MgYi9nY2MvZm9ydHJhbi9wYXJzZS5jYwppbmRleCBkOGIz OGNmYjVhYy4uOThhMDRlNzJhOTMgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3BhcnNlLmNj CisrKyBiL2djYy9mb3J0cmFuL3BhcnNlLmNjCkBAIC01MzA3LDI3ICs1MzA3LDUxIEBAIHBh cnNlX2RvX2Jsb2NrICh2b2lkKQogICBkb19vcCA9IG5ld19zdC5vcDsKICAgcy5leHQuZW5k X2RvX2xhYmVsID0gbmV3X3N0LmxhYmVsMTsKIAotICBpZiAobmV3X3N0LmV4dC5pdGVyYXRv ciAhPSBOVUxMKQorICBpZiAoZG9fb3AgPT0gRVhFQ19ET19DT05DVVJSRU5UKQorICAgIHsK KyAgICAgIGdmY19mb3JhbGxfaXRlcmF0b3IgKmZhOworICAgICAgZm9yIChmYSA9IG5ld19z dC5leHQuZm9yYWxsX2l0ZXJhdG9yOyBmYTsgZmEgPSBmYS0+bmV4dCkKKwl7CisJICAvKiBB cHBseSB1bnJvbGwgb25seSB0byBpbm5lcm1vc3QgbG9vcCAoZmlyc3QgY29udHJvbAorCSAg ICAgdmFyaWFibGUpLiAgKi8KKwkgIGlmIChkaXJlY3RpdmVfdW5yb2xsICE9IC0xKQorCSAg ICB7CisJICAgICAgZmEtPmFubm90LnVucm9sbCA9IGRpcmVjdGl2ZV91bnJvbGw7CisJICAg ICAgZGlyZWN0aXZlX3Vucm9sbCA9IC0xOworCSAgICB9CisJICBpZiAoZGlyZWN0aXZlX2l2 ZGVwKQorCSAgICBmYS0+YW5ub3QuaXZkZXAgPSBkaXJlY3RpdmVfaXZkZXA7CisJICBpZiAo ZGlyZWN0aXZlX3ZlY3RvcikKKwkgICAgZmEtPmFubm90LnZlY3RvciA9IGRpcmVjdGl2ZV92 ZWN0b3I7CisJICBpZiAoZGlyZWN0aXZlX25vdmVjdG9yKQorCSAgICBmYS0+YW5ub3Qubm92 ZWN0b3IgPSBkaXJlY3RpdmVfbm92ZWN0b3I7CisJfQorICAgICAgZGlyZWN0aXZlX2l2ZGVw ID0gZmFsc2U7CisgICAgICBkaXJlY3RpdmVfdmVjdG9yID0gZmFsc2U7CisgICAgICBkaXJl Y3RpdmVfbm92ZWN0b3IgPSBmYWxzZTsKKyAgICAgIHN0cmVlID0gTlVMTDsKKyAgICB9Cisg IGVsc2UgaWYgKG5ld19zdC5leHQuaXRlcmF0b3IgIT0gTlVMTCkKICAgICB7CiAgICAgICBz dHJlZSA9IG5ld19zdC5leHQuaXRlcmF0b3ItPnZhci0+c3ltdHJlZTsKICAgICAgIGlmIChk aXJlY3RpdmVfdW5yb2xsICE9IC0xKQogCXsKLQkgIG5ld19zdC5leHQuaXRlcmF0b3ItPnVu cm9sbCA9IGRpcmVjdGl2ZV91bnJvbGw7CisJICBuZXdfc3QuZXh0Lml0ZXJhdG9yLT5hbm5v dC51bnJvbGwgPSBkaXJlY3RpdmVfdW5yb2xsOwogCSAgZGlyZWN0aXZlX3Vucm9sbCA9IC0x OwogCX0KICAgICAgIGlmIChkaXJlY3RpdmVfaXZkZXApCiAJewotCSAgbmV3X3N0LmV4dC5p dGVyYXRvci0+aXZkZXAgPSBkaXJlY3RpdmVfaXZkZXA7CisJICBuZXdfc3QuZXh0Lml0ZXJh dG9yLT5hbm5vdC5pdmRlcCA9IGRpcmVjdGl2ZV9pdmRlcDsKIAkgIGRpcmVjdGl2ZV9pdmRl cCA9IGZhbHNlOwogCX0KICAgICAgIGlmIChkaXJlY3RpdmVfdmVjdG9yKQogCXsKLQkgIG5l d19zdC5leHQuaXRlcmF0b3ItPnZlY3RvciA9IGRpcmVjdGl2ZV92ZWN0b3I7CisJICBuZXdf c3QuZXh0Lml0ZXJhdG9yLT5hbm5vdC52ZWN0b3IgPSBkaXJlY3RpdmVfdmVjdG9yOwogCSAg ZGlyZWN0aXZlX3ZlY3RvciA9IGZhbHNlOwogCX0KICAgICAgIGlmIChkaXJlY3RpdmVfbm92 ZWN0b3IpCiAJewotCSAgbmV3X3N0LmV4dC5pdGVyYXRvci0+bm92ZWN0b3IgPSBkaXJlY3Rp dmVfbm92ZWN0b3I7CisJICBuZXdfc3QuZXh0Lml0ZXJhdG9yLT5hbm5vdC5ub3ZlY3RvciA9 IGRpcmVjdGl2ZV9ub3ZlY3RvcjsKIAkgIGRpcmVjdGl2ZV9ub3ZlY3RvciA9IGZhbHNlOwog CX0KICAgICB9CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1zdG10LmNjIGIvZ2Nj L2ZvcnRyYW4vdHJhbnMtc3RtdC5jYwppbmRleCBhNzE4ZGNlMjM3Zi4uNTI0N2QzZDM5ZDcg MTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuY2MKKysrIGIvZ2NjL2ZvcnRy YW4vdHJhbnMtc3RtdC5jYwpAQCAtNDEsNiArNDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBpdGVy X2luZm8KICAgdHJlZSBzdGFydDsKICAgdHJlZSBlbmQ7CiAgIHRyZWUgc3RlcDsKKyAgZ2Zj X2xvb3BfYW5ub3QgYW5ub3Q7CiAgIHN0cnVjdCBpdGVyX2luZm8gKm5leHQ7CiB9CiBpdGVy X2luZm87CkBAIC0yNDYyLDIxICsyNDYzLDIyIEBAIGdmY190cmFuc19zaW1wbGVfZG8gKGdm Y19jb2RlICogY29kZSwgc3RtdGJsb2NrX3QgKnBibG9jaywgdHJlZSBkb3ZhciwKIAkJCSAg ICBmb2xkX2NvbnZlcnQgKHR5cGUsIHRvKSk7CiAKICAgY29uZCA9IGdmY19ldmFsdWF0ZV9u b3dfbG9jIChsb2MsIGNvbmQsICZib2R5KTsKLSAgaWYgKGNvZGUtPmV4dC5pdGVyYXRvci0+ dW5yb2xsICYmIGNvbmQgIT0gZXJyb3JfbWFya19ub2RlKQorICBpZiAoY29kZS0+ZXh0Lml0 ZXJhdG9yLT5hbm5vdC51bnJvbGwgJiYgY29uZCAhPSBlcnJvcl9tYXJrX25vZGUpCiAgICAg Y29uZAogICAgICAgPSBidWlsZDMgKEFOTk9UQVRFX0VYUFIsIFRSRUVfVFlQRSAoY29uZCks IGNvbmQsCiAJCWJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCBhbm5vdF9leHBy X3Vucm9sbF9raW5kKSwKLQkJYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsIGNv ZGUtPmV4dC5pdGVyYXRvci0+dW5yb2xsKSk7CisJCWJ1aWxkX2ludF9jc3QgKGludGVnZXJf dHlwZV9ub2RlLAorCQkJICAgICAgIGNvZGUtPmV4dC5pdGVyYXRvci0+YW5ub3QudW5yb2xs KSk7CiAKLSAgaWYgKGNvZGUtPmV4dC5pdGVyYXRvci0+aXZkZXAgJiYgY29uZCAhPSBlcnJv cl9tYXJrX25vZGUpCisgIGlmIChjb2RlLT5leHQuaXRlcmF0b3ItPmFubm90Lml2ZGVwICYm IGNvbmQgIT0gZXJyb3JfbWFya19ub2RlKQogICAgIGNvbmQgPSBidWlsZDMgKEFOTk9UQVRF X0VYUFIsIFRSRUVfVFlQRSAoY29uZCksIGNvbmQsCiAJCSAgIGJ1aWxkX2ludF9jc3QgKGlu dGVnZXJfdHlwZV9ub2RlLCBhbm5vdF9leHByX2l2ZGVwX2tpbmQpLAogCQkgICBpbnRlZ2Vy X3plcm9fbm9kZSk7Ci0gIGlmIChjb2RlLT5leHQuaXRlcmF0b3ItPnZlY3RvciAmJiBjb25k ICE9IGVycm9yX21hcmtfbm9kZSkKKyAgaWYgKGNvZGUtPmV4dC5pdGVyYXRvci0+YW5ub3Qu dmVjdG9yICYmIGNvbmQgIT0gZXJyb3JfbWFya19ub2RlKQogICAgIGNvbmQgPSBidWlsZDMg KEFOTk9UQVRFX0VYUFIsIFRSRUVfVFlQRSAoY29uZCksIGNvbmQsCiAJCSAgIGJ1aWxkX2lu dF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCBhbm5vdF9leHByX3ZlY3Rvcl9raW5kKSwKIAkJ ICAgaW50ZWdlcl96ZXJvX25vZGUpOwotICBpZiAoY29kZS0+ZXh0Lml0ZXJhdG9yLT5ub3Zl Y3RvciAmJiBjb25kICE9IGVycm9yX21hcmtfbm9kZSkKKyAgaWYgKGNvZGUtPmV4dC5pdGVy YXRvci0+YW5ub3Qubm92ZWN0b3IgJiYgY29uZCAhPSBlcnJvcl9tYXJrX25vZGUpCiAgICAg Y29uZCA9IGJ1aWxkMyAoQU5OT1RBVEVfRVhQUiwgVFJFRV9UWVBFIChjb25kKSwgY29uZCwK IAkJICAgYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsIGFubm90X2V4cHJfbm9f dmVjdG9yX2tpbmQpLAogCQkgICBpbnRlZ2VyX3plcm9fbm9kZSk7CkBAIC0yODA2LDIxICsy ODA4LDIyIEBAIGdmY190cmFuc19kbyAoZ2ZjX2NvZGUgKiBjb2RlLCB0cmVlIGV4aXRfY29u ZCkKICAgLyogRW5kIHdpdGggdGhlIGxvb3AgY29uZGl0aW9uLiAgTG9vcCB1bnRpbCBjb3Vu dG0xdCA9PSAwLiAgKi8KICAgY29uZCA9IGZvbGRfYnVpbGQyX2xvYyAobG9jLCBFUV9FWFBS LCBsb2dpY2FsX3R5cGVfbm9kZSwgY291bnRtMXQsCiAJCQkgIGJ1aWxkX2ludF9jc3QgKHV0 eXBlLCAwKSk7Ci0gIGlmIChjb2RlLT5leHQuaXRlcmF0b3ItPnVucm9sbCAmJiBjb25kICE9 IGVycm9yX21hcmtfbm9kZSkKKyAgaWYgKGNvZGUtPmV4dC5pdGVyYXRvci0+YW5ub3QudW5y b2xsICYmIGNvbmQgIT0gZXJyb3JfbWFya19ub2RlKQogICAgIGNvbmQKICAgICAgID0gYnVp bGQzIChBTk5PVEFURV9FWFBSLCBUUkVFX1RZUEUgKGNvbmQpLCBjb25kLAogCQlidWlsZF9p bnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwgYW5ub3RfZXhwcl91bnJvbGxfa2luZCksCi0J CWJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCBjb2RlLT5leHQuaXRlcmF0b3It PnVucm9sbCkpOworCQlidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwKKwkJCSAg ICAgICBjb2RlLT5leHQuaXRlcmF0b3ItPmFubm90LnVucm9sbCkpOwogCi0gIGlmIChjb2Rl LT5leHQuaXRlcmF0b3ItPml2ZGVwICYmIGNvbmQgIT0gZXJyb3JfbWFya19ub2RlKQorICBp ZiAoY29kZS0+ZXh0Lml0ZXJhdG9yLT5hbm5vdC5pdmRlcCAmJiBjb25kICE9IGVycm9yX21h cmtfbm9kZSkKICAgICBjb25kID0gYnVpbGQzIChBTk5PVEFURV9FWFBSLCBUUkVFX1RZUEUg KGNvbmQpLCBjb25kLAogCQkgICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwg YW5ub3RfZXhwcl9pdmRlcF9raW5kKSwKIAkJICAgaW50ZWdlcl96ZXJvX25vZGUpOwotICBp ZiAoY29kZS0+ZXh0Lml0ZXJhdG9yLT52ZWN0b3IgJiYgY29uZCAhPSBlcnJvcl9tYXJrX25v ZGUpCisgIGlmIChjb2RlLT5leHQuaXRlcmF0b3ItPmFubm90LnZlY3RvciAmJiBjb25kICE9 IGVycm9yX21hcmtfbm9kZSkKICAgICBjb25kID0gYnVpbGQzIChBTk5PVEFURV9FWFBSLCBU UkVFX1RZUEUgKGNvbmQpLCBjb25kLAogCQkgICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5 cGVfbm9kZSwgYW5ub3RfZXhwcl92ZWN0b3Jfa2luZCksCiAJCSAgIGludGVnZXJfemVyb19u b2RlKTsKLSAgaWYgKGNvZGUtPmV4dC5pdGVyYXRvci0+bm92ZWN0b3IgJiYgY29uZCAhPSBl cnJvcl9tYXJrX25vZGUpCisgIGlmIChjb2RlLT5leHQuaXRlcmF0b3ItPmFubm90Lm5vdmVj dG9yICYmIGNvbmQgIT0gZXJyb3JfbWFya19ub2RlKQogICAgIGNvbmQgPSBidWlsZDMgKEFO Tk9UQVRFX0VYUFIsIFRSRUVfVFlQRSAoY29uZCksIGNvbmQsCiAJCSAgIGJ1aWxkX2ludF9j c3QgKGludGVnZXJfdHlwZV9ub2RlLCBhbm5vdF9leHByX25vX3ZlY3Rvcl9raW5kKSwKIAkJ ICAgaW50ZWdlcl96ZXJvX25vZGUpOwpAQCAtNDExNywxMiArNDEyMCwzMCBAQCBnZmNfdHJh bnNfZm9yYWxsX2xvb3AgKGZvcmFsbF9pbmZvICpmb3JhbGxfdG1wLCB0cmVlIGJvZHksCiAK ICAgICAgIC8qIFBSIDgzMDY0IG1lYW5zIHRoYXQgd2UgY2Fubm90IHVzZSBhbm5vdF9leHBy X3BhcmFsbGVsX2tpbmQgdW50aWwKICAgICAgICB0aGUgYXV0b3BhcmFsbGVsaXplciBjYW4g aGFuZGxlIHRoaXMuICAqLwotICAgICAgaWYgKGZvcmFsbF90bXAtPmRvX2NvbmN1cnJlbnQp CisgICAgICBpZiAoZm9yYWxsX3RtcC0+ZG9fY29uY3VycmVudCB8fCBpdGVyLT5hbm5vdC5p dmRlcCkKIAljb25kID0gYnVpbGQzIChBTk5PVEFURV9FWFBSLCBUUkVFX1RZUEUgKGNvbmQp LCBjb25kLAogCQkgICAgICAgYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsCiAJ CQkJICAgICAgYW5ub3RfZXhwcl9pdmRlcF9raW5kKSwKIAkJICAgICAgIGludGVnZXJfemVy b19ub2RlKTsKIAorICAgICAgaWYgKGl0ZXItPmFubm90LnVucm9sbCAmJiBjb25kICE9IGVy cm9yX21hcmtfbm9kZSkKKwljb25kID0gYnVpbGQzIChBTk5PVEFURV9FWFBSLCBUUkVFX1RZ UEUgKGNvbmQpLCBjb25kLAorCQkgICAgICAgYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBl X25vZGUsCisJCQkJICAgICAgYW5ub3RfZXhwcl91bnJvbGxfa2luZCksCisJCSAgICAgICBi dWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwgaXRlci0+YW5ub3QudW5yb2xsKSk7 CisKKyAgICAgIGlmIChpdGVyLT5hbm5vdC52ZWN0b3IgJiYgY29uZCAhPSBlcnJvcl9tYXJr X25vZGUpCisJY29uZCA9IGJ1aWxkMyAoQU5OT1RBVEVfRVhQUiwgVFJFRV9UWVBFIChjb25k KSwgY29uZCwKKwkJICAgICAgIGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLAor CQkJCSAgICAgIGFubm90X2V4cHJfdmVjdG9yX2tpbmQpLAorCQkgICAgICAgaW50ZWdlcl96 ZXJvX25vZGUpOworCisgICAgICBpZiAoaXRlci0+YW5ub3Qubm92ZWN0b3IgJiYgY29uZCAh PSBlcnJvcl9tYXJrX25vZGUpCisJY29uZCA9IGJ1aWxkMyAoQU5OT1RBVEVfRVhQUiwgVFJF RV9UWVBFIChjb25kKSwgY29uZCwKKwkJICAgICAgIGJ1aWxkX2ludF9jc3QgKGludGVnZXJf dHlwZV9ub2RlLAorCQkJCSAgICAgIGFubm90X2V4cHJfbm9fdmVjdG9yX2tpbmQpLAorCQkg ICAgICAgaW50ZWdlcl96ZXJvX25vZGUpOworCiAgICAgICB0bXAgPSBidWlsZDFfdiAoR09U T19FWFBSLCBleGl0X2xhYmVsKTsKICAgICAgIHRtcCA9IGZvbGRfYnVpbGQzX2xvYyAoaW5w dXRfbG9jYXRpb24sIENPTkRfRVhQUiwgdm9pZF90eXBlX25vZGUsCiAJCQkgICAgIGNvbmQs IHRtcCwgYnVpbGRfZW1wdHlfc3RtdCAoaW5wdXRfbG9jYXRpb24pKTsKQEAgLTUwOTAsNiAr NTExMSw5IEBAIGdmY190cmFuc19mb3JhbGxfMSAoZ2ZjX2NvZGUgKiBjb2RlLCBmb3JhbGxf aW5mbyAqIG5lc3RlZF9mb3JhbGxfaW5mbykKICAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxv Y2sgKCZibG9jaywgJnNlLnByZSk7CiAgICAgICBzdGVwW25dID0gc2UuZXhwcjsKIAorICAg ICAgLyogQ29weSBsb29wIGFubm90YXRpb25zLiAgKi8KKyAgICAgIHRoaXNfZm9yYWxsLT5h bm5vdCA9IGZhLT5hbm5vdDsKKwogICAgICAgLyogU2V0IHRoZSBORVhUIGZpZWxkIG9mIHRo aXNfZm9yYWxsIHRvIE5VTEwuICAqLwogICAgICAgdGhpc19mb3JhbGwtPm5leHQgPSBOVUxM OwogICAgICAgLyogTGluayB0aGlzX2ZvcmFsbCB0byB0aGUgaW5mbyBjb25zdHJ1Y3QuICAq LwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kb19jb25jdXJyZW50 XzcuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kb19jb25jdXJyZW50XzcuZjkw Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42MDRmNjcxMmQwNQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZG9fY29uY3Vy cmVudF83LmY5MApAQCAtMCwwICsxLDI2IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsg ZGctYWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1vcmlnaW5hbCIgfQorISBQUiBm b3J0cmFuLzExMzMwNQorCitwcm9ncmFtIGRjCisgIGltcGxpY2l0IG5vbmUKKyAgcmVhbCA6 OiBhKDEyKSwgYigxMiksIGMoMTYsOCksIGQoMTYsOCkKKyAgaW50ZWdlciA6OiBpLCBqCisg IGNhbGwgcmFuZG9tX251bWJlcihiKQorIUdDQyQgaXZkZXAKKyFHQ0MkIHZlY3RvcgorICBk byBjb25jdXJyZW50IChpPTE6MTIpCisgICAgIGEoaSkgPSAyKmIoaSkKKyAgZW5kIGRvCisg IGMgPSBiKDEpCisgIGQgPSBhKDIpCishR0NDJCBub3ZlY3RvcgorIUdDQyQgdW5yb2xsIDQK KyAgZG8gY29uY3VycmVudCAoaT0xOjE2OjIsaj0xOjg6MikKKyAgICAgZChpLGopID0gMypj KGksaikKKyAgZW5kIGRvCitlbmQgcHJvZ3JhbQorCishIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiQU5OT1RBVEVfRVhQUiAuKiBpdmRlcD4sIHZlY3RvciIgIm9yaWdpbmFsIiB9 IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJBTk5PVEFURV9FWFBSIC4qIGl2 ZGVwPiwgbm8tdmVjdG9yIiAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgIkFOTk9UQVRFX0VYUFIgLiogaXZkZXA+LCB1bnJvbGwgND4sIG5vLXZlY3Rv ciIgIm9yaWdpbmFsIiB9IH0KLS0gCjIuMzUuMwoK --------------0G9FYSX2HUx7FPyDFK4f0lG0--