From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 130570 invoked by alias); 1 Sep 2015 00:05:00 -0000 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 Received: (qmail 130554 invoked by uid 89); 1 Sep 2015 00:05:00 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.1 required=5.0 tests=AWL,BAYES_50,SPF_PASS,SUBJ_ALL_CAPS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mga11.intel.com Received: from mga11.intel.com (HELO mga11.intel.com) (192.55.52.93) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 01 Sep 2015 00:04:57 +0000 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP; 31 Aug 2015 17:04:56 -0700 X-ExtLoop1: 1 Received: from orsmsx101.amr.corp.intel.com ([10.22.225.128]) by fmsmga001.fm.intel.com with ESMTP; 31 Aug 2015 17:04:57 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by ORSMSX101.amr.corp.intel.com (10.22.225.128) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 31 Aug 2015 17:04:56 -0700 Received: from fmsmsx101.amr.corp.intel.com ([169.254.1.27]) by fmsmsx111.amr.corp.intel.com ([169.254.12.103]) with mapi id 14.03.0224.002; Mon, 31 Aug 2015 17:04:55 -0700 From: "Iyer, Balaji V" To: "gcc-patches@gcc.gnu.org" CC: "Zamyatin, Igor" Subject: [PATCH] PR 60586 Date: Tue, 01 Sep 2015 00:05:00 -0000 Message-ID: Content-Type: multipart/mixed; boundary="_002_BF230D13CA30DD48930C31D4099330003B0F002Afmsmsx101amrcor_" MIME-Version: 1.0 X-SW-Source: 2015-09/txt/msg00000.txt.bz2 --_002_BF230D13CA30DD48930C31D4099330003B0F002Afmsmsx101amrcor_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 1217 Hello Everyone, This patch will fix the bug reported in Bugzilla, PR 60586. The issue was = that the spawned function's function arguments must not be pushed into the = nested/lambda function. This patch should fix that issue. I have tested this on x86_64 (linux and Cygwin flavors). Is this OK for tru= nk?=20 Here are the Changelog entries: gcc/c-family/ChangeLog 2015-08-31 Balaji V. Iyer PR middle-end/60586 * c-common.h: Added two more parameters to the gimplify_cilk_spawn function. * c-gimplify.c (c_gimplify_expr): Likewise. * cilk.c (gimplify_cilk_spawn): Likewise and called gimplify_call_params_in_spawned_fn. (gimplify_call_params_in_spawned_fn): New function. gcc/cp/ChangeLog 2015-08-31 Balaji V. Iyer PR middle-end/60586 * cp-gimplify.c (cp_gimplify_expr): Added two additional parameters= to gimplify_cilk_spawn. gcc/testsuite/ChangeLog 2015-08-31 Balaji V. Iyer PR middle-end/60586 * c-c++-common/cilk-plus/CK/pr60586.c: New file. * g++.dg/cilk-plus/CK/pr60586.cc: Likewise. Thanks, Balaji V. Iyer. --_002_BF230D13CA30DD48930C31D4099330003B0F002Afmsmsx101amrcor_ Content-Type: text/plain; name="diff.txt" Content-Description: diff.txt Content-Disposition: attachment; filename="diff.txt"; size=8131; creation-date="Tue, 01 Sep 2015 00:03:04 GMT"; modification-date="Tue, 01 Sep 2015 00:03:04 GMT" Content-Transfer-Encoding: base64 Content-length: 11025 ZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWNvbW1vbi5oIGIvZ2NjL2Mt ZmFtaWx5L2MtY29tbW9uLmgKaW5kZXggYmU2M2NkMi4uMDI3YmVhNiAxMDA2 NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmgKKysrIGIvZ2NjL2Mt ZmFtaWx5L2MtY29tbW9uLmgKQEAgLTE0MjMsNyArMTQyMyw3IEBAIGV4dGVy biB2ZWMgPHRyZWUsIHZhX2djPiAqZml4X3NlY19pbXBsaWNpdF9hcmdzCiAv KiBJbiBjaWxrLmMuICAqLwogZXh0ZXJuIHRyZWUgaW5zZXJ0X2NpbGtfZnJh bWUgKHRyZWUpOwogZXh0ZXJuIHZvaWQgY2lsa19pbml0X2J1aWx0aW5zICh2 b2lkKTsKLWV4dGVybiBpbnQgZ2ltcGxpZnlfY2lsa19zcGF3biAodHJlZSAq KTsKK2V4dGVybiBpbnQgZ2ltcGxpZnlfY2lsa19zcGF3biAodHJlZSAqLCBn aW1wbGVfc2VxICosIGdpbXBsZV9zZXEgKik7CiBleHRlcm4gdm9pZCBjaWxr X2luc3RhbGxfYm9keV93aXRoX2ZyYW1lX2NsZWFudXAgKHRyZWUsIHRyZWUs IHZvaWQgKik7CiBleHRlcm4gYm9vbCBjaWxrX2RldGVjdF9zcGF3bl9hbmRf dW53cmFwICh0cmVlICopOwogZXh0ZXJuIGJvb2wgY2lsa19zZXRfc3Bhd25f bWFya2VyIChsb2NhdGlvbl90LCB0cmVlKTsKZGlmZiAtLWdpdCBhL2djYy9j LWZhbWlseS9jLWdpbXBsaWZ5LmMgYi9nY2MvYy1mYW1pbHkvYy1naW1wbGlm eS5jCmluZGV4IDFjODE3NzMuLmZkOTU0ZDMgMTAwNjQ0Ci0tLSBhL2djYy9j LWZhbWlseS9jLWdpbXBsaWZ5LmMKKysrIGIvZ2NjL2MtZmFtaWx5L2MtZ2lt cGxpZnkuYwpAQCAtMjg4LDcgKzI4OCw4IEBAIGNfZ2ltcGxpZnlfZXhwciAo dHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCBBVFRSSUJVVEVfVU5V U0VELAogCiAgICAgICAvKiBJZiBlcnJvcnMgYXJlIHNlZW4sIHRoZW4ganVz dCBwcm9jZXNzIGl0IGFzIGEgQ0FMTF9FWFBSLiAgKi8KICAgICAgIGlmICgh c2Vlbl9lcnJvciAoKSkKLQlyZXR1cm4gKGVudW0gZ2ltcGxpZnlfc3RhdHVz KSBnaW1wbGlmeV9jaWxrX3NwYXduIChleHByX3ApOworCXJldHVybiAoZW51 bSBnaW1wbGlmeV9zdGF0dXMpIGdpbXBsaWZ5X2NpbGtfc3Bhd24gKGV4cHJf cCwgcHJlX3AsCisJCQkJCQkJICAgcG9zdF9wKTsKIAogICAgIGNhc2UgTU9E SUZZX0VYUFI6CiAgICAgY2FzZSBJTklUX0VYUFI6CkBAIC0yOTksNyArMzAw LDggQEAgY19naW1wbGlmeV9leHByICh0cmVlICpleHByX3AsIGdpbXBsZV9z ZXEgKnByZV9wIEFUVFJJQlVURV9VTlVTRUQsCiAJICAgICBvcmlnaW5hbCBl eHByZXNzaW9uIChNT0RJRlkvSU5JVC9DQUxMX0VYUFIpIGlzIHByb2Nlc3Nl cyBhcwogCSAgICAgaXQgaXMgc3VwcG9zZWQgdG8gYmUuICAqLwogCSAgJiYg IXNlZW5fZXJyb3IgKCkpCi0JcmV0dXJuIChlbnVtIGdpbXBsaWZ5X3N0YXR1 cykgZ2ltcGxpZnlfY2lsa19zcGF3biAoZXhwcl9wKTsKKwlyZXR1cm4gKGVu dW0gZ2ltcGxpZnlfc3RhdHVzKSBnaW1wbGlmeV9jaWxrX3NwYXduIChleHBy X3AsIHByZV9wLAorCQkJCQkJCSAgIHBvc3RfcCk7CiAKICAgICBkZWZhdWx0 OjsKICAgICB9CmRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvY2lsay5jIGIv Z2NjL2MtZmFtaWx5L2NpbGsuYwppbmRleCAxMDEyYTRmLi4xZmU2Njg1IDEw MDY0NAotLS0gYS9nY2MvYy1mYW1pbHkvY2lsay5jCisrKyBiL2djYy9jLWZh bWlseS9jaWxrLmMKQEAgLTMzLDYgKzMzLDcgQEAgYWxvbmcgd2l0aCBHQ0M7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRl ICJnaW1wbGlmeS5oIgogI2luY2x1ZGUgInRyZWUtaXRlcmF0b3IuaCIKICNp bmNsdWRlICJ0cmVlLWlubGluZS5oIgorI2luY2x1ZGUgImNwL2NwLXRyZWUu aCIKICNpbmNsdWRlICJjLWZhbWlseS9jLWNvbW1vbi5oIgogI2luY2x1ZGUg InRvcGxldi5oIiAKICNpbmNsdWRlICJ0bS5oIgpAQCAtNzYyLDEyICs3NjMs MzcgQEAgY3JlYXRlX2NpbGtfd3JhcHBlciAodHJlZSBleHAsIHRyZWUgKmFy Z3Nfb3V0KQogICByZXR1cm4gZm5kZWNsOwogfQogCisvKiBHaW1wbGlmeSBh bGwgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBTcGF3bmVkIGZ1bmN0aW9uLiAg KkVYUFJfUCBjYW4gYmUgYSAKKyAgIENBTExfRVhQUiwgSU5JVF9FWFBSLCBN T0RJRllfRVhQUiBvciBUQVJHRVRfRVhQUi4gICpQUkVfUCBhbmQgKlBPU1Rf UCBhcmUKKyAgIGdpbXBsZSBzZXF1ZW5jZXMgZnJvbSB0aGUgY2FsbGVyIG9m IGdpbXBsaWZ5X2NpbGtfc3Bhd24uICAqLworCitzdGF0aWMgdm9pZAorZ2lt cGxpZnlfY2FsbF9wYXJhbXNfaW5fc3Bhd25lZF9mbiAodHJlZSAqZXhwcl9w LCBnaW1wbGVfc2VxICpwcmVfcCwKKwkJCQkgICAgZ2ltcGxlX3NlcSAqcG9z dF9wKQoreworICBpbnQgaWkgPSAwOworICB0cmVlICpmaXhfcGFybV9leHBy ID0gZXhwcl9wOworICBpZiAoKFRSRUVfQ09ERSAoKmV4cHJfcCkgPT0gSU5J VF9FWFBSKQorICAgICAgfHwgKFRSRUVfQ09ERSAoKmV4cHJfcCkgPT0gVEFS R0VUX0VYUFIpCisgICAgICB8fCAoVFJFRV9DT0RFICgqZXhwcl9wKSA9PSBN T0RJRllfRVhQUikpCisgICAgZml4X3Bhcm1fZXhwciA9ICZUUkVFX09QRVJB TkQgKCpleHByX3AsIDEpOworCisgIGlmIChUUkVFX0NPREUgKCpmaXhfcGFy bV9leHByKSA9PSBDQUxMX0VYUFIpCisgICAgZm9yIChpaSA9IDA7IGlpIDwg Y2FsbF9leHByX25hcmdzICgqZml4X3Bhcm1fZXhwcik7IGlpKyspCisgICAg ICBnaW1wbGlmeV9leHByICgmQ0FMTF9FWFBSX0FSRyAoKmZpeF9wYXJtX2V4 cHIsIGlpKSwgcHJlX3AsIHBvc3RfcCwKKwkJICAgICBpc19naW1wbGVfcmVn LCBmYl9ydmFsdWUpOworICBlbHNlIGlmIChUUkVFX0NPREUgKCpmaXhfcGFy bV9leHByKSA9PSBBR0dSX0lOSVRfRVhQUikKKyAgICBmb3IgKGlpID0gMDsg aWkgPCBhZ2dyX2luaXRfZXhwcl9uYXJncyAoKmZpeF9wYXJtX2V4cHIpOyBp aSsrKQorICAgICAgZ2ltcGxpZnlfZXhwciAoJkFHR1JfSU5JVF9FWFBSX0FS RyAoKmZpeF9wYXJtX2V4cHIsIGlpKSwgcHJlX3AsIHBvc3RfcCwKKwkJICAg ICBpc19naW1wbGVfcmVnLCBmYl9ydmFsdWUpOworfQorCiAvKiBUcmFuc2Zv cm0gKlNQQVdOX1AsIGEgc3Bhd25lZCBDQUxMX0VYUFIsIHRvIGdpbXBsZS4g ICpTUEFXTl9QIGNhbiBiZSBhCiAgICBDQUxMX0VYUFIsIElOSVRfRVhQUiBv ciBNT0RJRllfRVhQUi4gIFJldHVybnMgR1NfT0sgaWYgZXZlcnl0aGluZyBp cyBmaW5lLAogICAgYW5kIEdTX1VOSEFORExFRCwgb3RoZXJ3aXNlLiAgKi8K IAogaW50Ci1naW1wbGlmeV9jaWxrX3NwYXduICh0cmVlICpzcGF3bl9wKQor Z2ltcGxpZnlfY2lsa19zcGF3biAodHJlZSAqc3Bhd25fcCwgZ2ltcGxlX3Nl cSAqcHJlX3AsIGdpbXBsZV9zZXEgKnBvc3RfcCkKIHsKICAgdHJlZSBleHBy ID0gKnNwYXduX3A7CiAgIHRyZWUgZnVuY3Rpb24sIGNhbGwxLCBjYWxsMiwg bmV3X2FyZ3M7CkBAIC03ODQsNiArODEwLDggQEAgZ2ltcGxpZnlfY2lsa19z cGF3biAodHJlZSAqc3Bhd25fcCkKICAgd2hpbGUgKFRSRUVfQ09ERSAoZXhw cikgPT0gQ0xFQU5VUF9QT0lOVF9FWFBSCiAJIHx8IFRSRUVfQ09ERSAoZXhw cikgPT0gRVhQUl9TVE1UKQogICAgIGV4cHIgPSBUUkVFX09QRVJBTkQgKGV4 cHIsIDApOworCisgIGdpbXBsaWZ5X2NhbGxfcGFyYW1zX2luX3NwYXduZWRf Zm4gKCZleHByLCBwcmVfcCwgcG9zdF9wKTsgIAogICAKICAgbmV3X2FyZ3Mg PSBOVUxMOwogICBmdW5jdGlvbiA9IGNyZWF0ZV9jaWxrX3dyYXBwZXIgKGV4 cHIsICZuZXdfYXJncyk7CmRpZmYgLS1naXQgYS9nY2MvY3AvY3AtZ2ltcGxp ZnkuYyBiL2djYy9jcC9jcC1naW1wbGlmeS5jCmluZGV4IGMzNmQzMzkuLjhh YWNiYmIgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jcC1naW1wbGlmeS5jCisrKyBi L2djYy9jcC9jcC1naW1wbGlmeS5jCkBAIC02MDMsNyArNjAzLDggQEAgY3Bf Z2ltcGxpZnlfZXhwciAodHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVf cCwgZ2ltcGxlX3NlcSAqcG9zdF9wKQogICAgICAgaWYgKGZuX2NvbnRhaW5z X2NpbGtfc3Bhd25fcCAoY2Z1bikKIAkgICYmIGNpbGtfZGV0ZWN0X3NwYXdu X2FuZF91bndyYXAgKGV4cHJfcCkKIAkgICYmICFzZWVuX2Vycm9yICgpKQot CXJldHVybiAoZW51bSBnaW1wbGlmeV9zdGF0dXMpIGdpbXBsaWZ5X2NpbGtf c3Bhd24gKGV4cHJfcCk7CisJcmV0dXJuIChlbnVtIGdpbXBsaWZ5X3N0YXR1 cykgZ2ltcGxpZnlfY2lsa19zcGF3biAoZXhwcl9wLCBwcmVfcCwgCisJCQkJ CQkJICAgcG9zdF9wKTsKICAgICAgIGNwX2dpbXBsaWZ5X2luaXRfZXhwciAo ZXhwcl9wKTsKICAgICAgIGlmIChUUkVFX0NPREUgKCpleHByX3ApICE9IElO SVRfRVhQUikKIAlyZXR1cm4gR1NfT0s7CkBAIC02MTQsNyArNjE1LDggQEAg Y3BfZ2ltcGxpZnlfZXhwciAodHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpw cmVfcCwgZ2ltcGxlX3NlcSAqcG9zdF9wKQogCWlmIChmbl9jb250YWluc19j aWxrX3NwYXduX3AgKGNmdW4pCiAJICAgICYmIGNpbGtfZGV0ZWN0X3NwYXdu X2FuZF91bndyYXAgKGV4cHJfcCkKIAkgICAgJiYgIXNlZW5fZXJyb3IgKCkp Ci0JICByZXR1cm4gKGVudW0gZ2ltcGxpZnlfc3RhdHVzKSBnaW1wbGlmeV9j aWxrX3NwYXduIChleHByX3ApOworCSAgcmV0dXJuIChlbnVtIGdpbXBsaWZ5 X3N0YXR1cykgZ2ltcGxpZnlfY2lsa19zcGF3biAoZXhwcl9wLCBwcmVfcCwK KwkJCQkJCQkgICAgIHBvc3RfcCk7CiAKIAkvKiBJZiB0aGUgYmFjayBlbmQg aXNuJ3QgY2xldmVyIGVub3VnaCB0byBrbm93IHRoYXQgdGhlIGxocyBhbmQg cmhzCiAJICAgdHlwZXMgYXJlIHRoZSBzYW1lLCBhZGQgYW4gZXhwbGljaXQg Y29udmVyc2lvbi4gICovCkBAIC03MTUsMTMgKzcxNywxNSBAQCBjcF9naW1w bGlmeV9leHByICh0cmVlICpleHByX3AsIGdpbXBsZV9zZXEgKnByZV9wLCBn aW1wbGVfc2VxICpwb3N0X3ApCiAKICAgICAgIC8qIElmIGVycm9ycyBhcmUg c2VlbiwgdGhlbiBqdXN0IHByb2Nlc3MgaXQgYXMgYSBDQUxMX0VYUFIuICAq LwogICAgICAgaWYgKCFzZWVuX2Vycm9yICgpKQotCXJldHVybiAoZW51bSBn aW1wbGlmeV9zdGF0dXMpIGdpbXBsaWZ5X2NpbGtfc3Bhd24gKGV4cHJfcCk7 CisJcmV0dXJuIChlbnVtIGdpbXBsaWZ5X3N0YXR1cykgZ2ltcGxpZnlfY2ls a19zcGF3biAoZXhwcl9wLCBwcmVfcCwKKwkJCQkJCQkgICBwb3N0X3ApOwog ICAgICAgCiAgICAgY2FzZSBDQUxMX0VYUFI6CiAgICAgICBpZiAoZm5fY29u dGFpbnNfY2lsa19zcGF3bl9wIChjZnVuKQogCSAgJiYgY2lsa19kZXRlY3Rf c3Bhd25fYW5kX3Vud3JhcCAoZXhwcl9wKQogCSAgJiYgIXNlZW5fZXJyb3Ig KCkpCi0JcmV0dXJuIChlbnVtIGdpbXBsaWZ5X3N0YXR1cykgZ2ltcGxpZnlf Y2lsa19zcGF3biAoZXhwcl9wKTsKKwlyZXR1cm4gKGVudW0gZ2ltcGxpZnlf c3RhdHVzKSBnaW1wbGlmeV9jaWxrX3NwYXduIChleHByX3AsIHByZV9wLAor CQkJCQkJCSAgIHBvc3RfcCk7CiAKICAgICAgIC8qIERSIDEwMzAgc2F5cyB0 aGF0IHdlIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGVsZW1lbnRzIG9mIGFuCiAJ IGluaXRpYWxpemVyLWxpc3QgaW4gZm9yd2FyZCBvcmRlciBldmVuIHdoZW4g aXQncyB1c2VkIGFzIGFyZ3VtZW50cyB0bwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vY2lsay1wbHVzL0NLL3ByNjA1ODYuYyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2NpbGstcGx1cy9DSy9wcjYw NTg2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQw MTJhMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2NpbGstcGx1cy9DSy9wcjYwNTg2LmMKQEAgLTAsMCArMSwyOCBA QAorLyogeyBkZy1kbyBydW4gIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0 LSotKiB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItZmNpbGtwbHVzIC1P MiIgfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1sY2lsa3J0 cyIgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9ICovCisK K2ludCBub29wKGludCB4KQoreworICByZXR1cm4geDsKK30KKworaW50IHBv c3RfaW5jcmVtZW50KGludCAqeCkKK3sKKyAgcmV0dXJuICgqeCkrKzsKK30K KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgaW50 IG0gPSA1OworICBpbnQgbiA9IG07CisgIGludCByID0gX0NpbGtfc3Bhd24g bm9vcChwb3N0X2luY3JlbWVudCgmbikpOworICBpbnQgbjIgPSBuOworICBf Q2lsa19zeW5jOworCisgIGlmIChyICE9IG0gfHwgbjIgIT0gbSArIDEpCisg ICAgcmV0dXJuIDE7CisgIGVsc2UKKyAgICByZXR1cm4gMDsKK30KKwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY2lsay1wbHVzL0NLL3By NjA1ODYuY2MgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jaWxrLXBsdXMvQ0sv cHI2MDU4Ni5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42YTI3Y2FkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY2lsay1wbHVzL0NLL3ByNjA1ODYuY2MKQEAgLTAsMCArMSw4OSBA QAorLyogeyBkZy1vcHRpb25zICItZmNpbGtwbHVzIiB9ICovCisvKiB7IGRn LWRvIHJ1biB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIGFybSotKi0q IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItZmNpbGtwbHVzIC1sY2lsa3J0 cyIgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9ICovCisK K2NsYXNzIFJlY3RhbmdsZQoreworICBpbnQgYXJlYV92YWwsIGgsIHc7Cisg IHB1YmxpYzoKKyAgICBSZWN0YW5nbGUgKGludCwgaW50KTsKKyAgICBSZWN0 YW5nbGUgKGludCwgaW50LCBpbnQpOworICAgIH5SZWN0YW5nbGUgKCk7Cisg ICAgaW50IGFyZWEgKCk7Cit9OworUmVjdGFuZ2xlOjp+UmVjdGFuZ2xlICgp Cit7CisgIGggPSAwOworICB3ID0gMDsKKyAgYXJlYV92YWwgPSAwOworfQor UmVjdGFuZ2xlOjpSZWN0YW5nbGUgKGludCBoZWlnaHQsIGludCB3aWR0aCkK K3sKKyAgaCA9IGhlaWdodDsKKyAgdyA9IHdpZHRoOworICBhcmVhX3ZhbCA9 IDA7Cit9CisKK2ludCBzb21lX2Z1bmMoaW50ICZ4KQoreworICB4Kys7Cisg IHJldHVybiB4OworfQorCitSZWN0YW5nbGU6OlJlY3RhbmdsZSAoaW50IGhl aWdodCwgaW50IHdpZHRoLCBpbnQgYXJlYV9vcmlnKQoreworICBoID0gaGVp Z2h0OworICB3ID0gd2lkdGg7CisgIGFyZWFfdmFsID0gYXJlYV9vcmlnOwor fQorCitpbnQgUmVjdGFuZ2xlOjphcmVhKCkKK3sKKyAgcmV0dXJuIChhcmVh X3ZhbCArPSAoaCp3KSk7Cit9CisKKworaW50IHNvbWVfZnVuYyAoaW50ICYp OworCisvKiBTcGF3bmluZyBjb25zdHJ1Y3Rvci4gICovCitpbnQgbWFpbjEg KHZvaWQpCit7CisgIGludCB4ID0gMzsKKyAgUmVjdGFuZ2xlIHIgPSBfQ2ls a19zcGF3biBSZWN0YW5nbGUgKHNvbWVfZnVuYyh4KSwgMyk7CisgIHJldHVy biByLmFyZWEoKTsKK30KKyAKKy8qIFNwYXduaW5nIGNvbnN0cnVjdG9yIDIu ICAqLworaW50IG1haW4yICh2b2lkKQoreworICBSZWN0YW5nbGUgciAoX0Np bGtfc3Bhd24gUmVjdGFuZ2xlICg0LCAzKSk7CisgIHJldHVybiByLmFyZWEo KTsKK30KKworLyogU3Bhd25pbmcgY29weSBjb25zdHJ1Y3Rvci4gICovCitp bnQgbWFpbjMgKHZvaWQpCit7CisgIGludCB4ID0gMzsKKyAgUmVjdGFuZ2xl IHIgPSBfQ2lsa19zcGF3biBSZWN0YW5nbGUgKHNvbWVfZnVuYyh4KSwgMywg Mik7CisgIHJldHVybiByLmFyZWEgKCk7Cit9CisKKy8qIFNwYXduaW5nIGNv cHkgY29uc3RydWN0b3IgMi4gICovCitpbnQgbWFpbjQgKHZvaWQpCit7Cisg IFJlY3RhbmdsZSByICggX0NpbGtfc3Bhd24gUmVjdGFuZ2xlICg0LCAzLCAy KSk7CisgIHJldHVybiByLmFyZWEoKTsKK30KKworaW50IG1haW4gKHZvaWQp Cit7CisgIGlmIChtYWluMSAoKSAhPSAxMikKKyAgICBfX2J1aWx0aW5fYWJv cnQgKCk7CisgIGlmIChtYWluMiAoKSAhPSAxMikKKyAgICBfX2J1aWx0aW5f YWJvcnQgKCk7CisgIGlmIChtYWluMyAoKSAhPSAxNCkKKyAgICBfX2J1aWx0 aW5fYWJvcnQgKCk7CisgIGlmIChtYWluNCgpICE9IDE0KQorICAgIF9fYnVp bHRpbl9hYm9ydCAoKTsKKyAgcmV0dXJuIDA7Cit9Cg== --_002_BF230D13CA30DD48930C31D4099330003B0F002Afmsmsx101amrcor_--