From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by sourceware.org (Postfix) with ESMTPS id 4A5363858D37 for ; Tue, 23 May 2023 06:36:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4A5363858D37 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=huawei.com Received: from lhrpeml500004.china.huawei.com (unknown [172.18.147.201]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4QQPcl153cz6J7BP; Tue, 23 May 2023 14:32:23 +0800 (CST) Received: from lhrpeml500004.china.huawei.com (7.191.163.9) by lhrpeml500004.china.huawei.com (7.191.163.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 23 May 2023 07:36:55 +0100 Received: from lhrpeml500004.china.huawei.com ([7.191.163.9]) by lhrpeml500004.china.huawei.com ([7.191.163.9]) with mapi id 15.01.2507.023; Tue, 23 May 2023 07:36:55 +0100 From: Benjamin Minguez To: "Richard Earnshaw (lists)" , Kyrylo Tkachov , "gcc-help@gcc.gnu.org" Subject: RE: Condition execution optimization with gcc 7.5 Thread-Topic: Condition execution optimization with gcc 7.5 Thread-Index: Adl/TMBSKMw/jWBlR02Ebyaz76pGRwDDZEEgACudNSABO3aCIABeTEaAANPZpJAAACN/gAAgQ7tw Date: Tue, 23 May 2023 06:36:55 +0000 Message-ID: References: <5847ae4810754a6dbff4cf212a83eb8a@huawei.com> <11ba2ad9538e4179a3f3a5c1210c4b8e@huawei.com> <52514568-bf71-b750-b4cf-3c532271ba01@arm.com> In-Reply-To: <52514568-bf71-b750-b4cf-3c532271ba01@arm.com> Accept-Language: en-150, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.206.150.211] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,KAM_NUMSUBJECT,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: SGVsbG8sDQoNClRoYW5rcyBmb3IgdGhlIGFuc3dlciwgaXQgaXMgdmVyeSBjbGVhciB0byBtZSBu b3cuDQoNCkFnYWluIHRoYW5rcyBhIGxvdC4NCkJlc3QsDQpCZW5qYW1pbg0KDQotLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogUmljaGFyZCBFYXJuc2hhdyAobGlzdHMpIDxSaWNoYXJk LkVhcm5zaGF3QGFybS5jb20+IA0KU2VudDogTW9uZGF5LCBNYXkgMjIsIDIwMjMgNjoxMiBQTQ0K VG86IEJlbmphbWluIE1pbmd1ZXogPGJlbmphbWluLm1pbmd1ZXpAaHVhd2VpLmNvbT47IEt5cnls byBUa2FjaG92IDxLeXJ5bG8uVGthY2hvdkBhcm0uY29tPjsgZ2NjLWhlbHBAZ2NjLmdudS5vcmcN ClN1YmplY3Q6IFJlOiBDb25kaXRpb24gZXhlY3V0aW9uIG9wdGltaXphdGlvbiB3aXRoIGdjYyA3 LjUNCg0KT24gYWFyY2g2NCB0aGlzIGNvZGUgY2Fubm90IHVzZSBjb25kaXRpb25hbCBzZWxlY3Qu ICBBbiBvcGVyYXRpb24gc3VjaCBhcw0KCWlmIChjKSB7DQoJICAuLi4NCgkgIHItPmxvd2Nhc2Vf aGVhZGVyWzBdID0gYzsNCgkgIC4uLg0KCX0NCg0Kd291bGQgYmUgYSBjb25kaXRpb25hbCBzdG9y ZSB0byBtZW1vcnkgYW5kIGNhbiBvbmx5IGhhcHBlbiBpZiB0aGUgZ3VhcmRpbmcgY29uZGl0aW9u IGlzIHRydWUuICBJdCdzIG5vdCBzYWZlIHRvIGNvbnZlcnQgdGhpcyBpbnRvLCBzYXkNCg0KCWNt cCBjLCAjMA0KCS4uLg0KCWxkciB3MSwgW3B0cl0NCgljc2VsIHcxLCB3MSwgYywgZXENCglzdHIg dzEsIFtwdHJdDQoNCmJlY2F1c2UgdGhlIHN0b3JlIHdvdWxkIGludHJvZHVjZSBhIHBvc3NpYmxl IHJhY2Ugd2l0aCBhbnkgb3RoZXIgdGhyZWFkIHRoYXQgbWlnaHQgYmUgd3JpdGluZyB0byB0aGUg c2FtZSBsb2NhdGlvbi4gIFRoZSBjb21waWxlciB3b3VsZCBhbHNvIGhhdmUgdG8gcHJvdmUgdGhh dCBwdHIgYWx3YXlzIGNvbnRhaW5lZCBhIHZhbGlkIGFkZHJlc3Mgd2hlbiAnYycgd2FzIGZhbHNl IGFzIHdlbGwsIHNvbWV0aGluZyB0aGF0IG1pZ2h0IG5vdCBiZSBwb3NzaWJsZSBnaXZlbiB0aGUg aW5mb3JtYXRpb24gYXZhaWxhYmxlLg0KDQpUaGUgZnVuY3Rpb24gYXJtX21heF9jb25kaXRpb25h bF9leGVjdXRlIGlzIG9ubHkgdXNlZCBmb3IgMzItYml0IGFybSB0YXJnZXRzLiAgSXQncyBub3Qg cGFydCBvZiB0aGUgYWFyY2g2NCBjb21waWxlci4NCg0KUi4NCg0KT24gMjIvMDUvMjAyMyAxNjo0 MywgQmVuamFtaW4gTWluZ3VleiB2aWEgR2NjLWhlbHAgd3JvdGU6DQo+IEhlbGxvIFJpY2hhcmQs DQo+IA0KPiBJJ20gY29tcGlsaW5nIGZvciBhYXJjaDY0LiBJbmRlZWQsIEkgd2FzIGV4cGVjdGlu ZyBjb252ZXJzaW9uIHZpYSBjb25kaXRpb25hbCBtb3ZlIG9yIHNldC4NCj4gSSB1bmRlcnN0YW5k IHRoYXQgY29kZSBzdWNoIGFzIE5HSU5YIEhUVFAgcGFyc2VyIGlzIHN1aXRhYmxlIGZvciBzdWNo IGNvbnZlcnNpb24uIEJ1dCBJIHdhcyBleHBlY3RpbmcgdGhhdCwgZm9yIGV4YW1wbGUsIHRoaXMg Y29kZSBjYW4gYmVuZWZpdCBvZiBpdCAobmd4X2hhc2ggaXMgYW4gaW5saW5lIGZ1bmN0aW9uIGFu ZCBpcyBhIHNpbXBsZSB4b3Igb3BlcmF0aW9uKToNCj4+PiAgICAgICAgICAgICAgICAgICBpZiAo Yykgew0KPj4+ICAgICAgICAgICAgICAgICAgICAgICBoYXNoID0gbmd4X2hhc2goMCwgYyk7DQo+ Pj4gICAgICAgICAgICAgICAgICAgICAgIHItPmxvd2Nhc2VfaGVhZGVyWzBdID0gYzsNCj4+PiAg ICAgICAgICAgICAgICAgICAgICAgaSA9IDE7DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPj4+ICAgICAgICAgICAgICAgICAgIH0NCj4gDQo+IFRoYW5rIGZvciB5b3VyIGhlbHAg YW5kIHlvdXIgYW5zd2Vycy4NCj4gDQo+IEJlc3QsDQo+IEJlbmphbWluIE1pbmd1ZXoNCj4gDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFJpY2hhcmQgRWFybnNoYXcgKGxp c3RzKSA8UmljaGFyZC5FYXJuc2hhd0Bhcm0uY29tPg0KPiBTZW50OiBUaHVyc2RheSwgTWF5IDE4 LCAyMDIzIDE6MDIgUE0NCj4gVG86IEJlbmphbWluIE1pbmd1ZXogPGJlbmphbWluLm1pbmd1ZXpA aHVhd2VpLmNvbT47IEt5cnlsbyBUa2FjaG92IA0KPiA8S3lyeWxvLlRrYWNob3ZAYXJtLmNvbT47 IGdjYy1oZWxwQGdjYy5nbnUub3JnDQo+IFN1YmplY3Q6IFJlOiBDb25kaXRpb24gZXhlY3V0aW9u IG9wdGltaXphdGlvbiB3aXRoIGdjYyA3LjUNCj4gDQo+IE9uIDE3LzA1LzIwMjMgMDk6MTcsIEJl bmphbWluIE1pbmd1ZXogdmlhIEdjYy1oZWxwIHdyb3RlOg0KPj4gSGVsbG8sDQo+Pg0KPj4gSSBk aWQgYWRkIC1tYXJjaD1hcm12OC1hIChhbmQgdGhlIG90aGVycyBhcm12OC4qLWEpIHRvIEdDQyBj b21tYW5kIGxpbmUsIGJ1dCBpdCBsb29rcyBsaWtlIHRoZSBjb25kaXRpb25hbCBleGVjdXRpb24g b3B0aW1pemF0aW9uLCBjb25kX2V4ZWNfZmluZF9pZl9ibG9jayBmdW5jdGlvbiwgaXMgbmV2ZXIg Y2FsbGVkLiBJIGVuYWJsZWQgYWxsIGdjYyBkdW1wcyAoLWRhIG9wdGlvbikgYW5kIHRoaXMgZnVu Y3Rpb24gZGVidWcgbWVzc2FnZSBhcmUgbmV2ZXIgcHJpbnRlZC4NCj4gDQo+IEp1c3QgdG8gYmUg Y2VydGFpbiwgYXJlIHlvdSBjb21waWxpbmcgZm9yIGFhcmNoMzIgKGFybS90aHVtYiksIG9yIGFh cmNoNjQ/ICBUaGUgbGF0dGVyIGRvZXMgbm90IHN1cHBvcnQgY29uZGl0aW9uYWwgZXhlY3V0aW9u LCBleGNlcHQgdmlhIGluc3RydWN0aW9ucyBzdWNoIGFzIENTRUwuDQo+IA0KPiBbbW9yZSBjb21t ZW50cyBsb3dlciBkb3duXQ0KPiANCj4+IEluIHBhcmFsbGVsLCBJIGFsc28gdHJ5ICB3aXRoIGRp ZmZlcmVudCB2ZXJzaW9uIG9mIEdDQzogOS41LjAgYW5kIDExLjMuMCwgYW5kIGFnYWluIHRoZSBJ IGhhZCB0aGUgc2FtZSByZXN1bHRzLg0KPj4NCj4+ICAgIERvIHlvdSBoYXZlIGFueSBpZGVhIHdo eSB0aGUgdGhpcyBvcHRpbWl6YXRpb24gc3RlcCBpcyBub3QgY2FsbGVkPw0KPj4NCj4+IFRoYW5r IHlvdSBpbiBhZHZhbmNlIGZvciB5b3VyIGhlbHAuDQo+Pg0KPj4gQmVzdCwNCj4+IEJlbmphbWlu IE1pbmd1ZXoNCj4+DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogQmVu amFtaW4gTWluZ3Vleg0KPj4gU2VudDogV2VkbmVzZGF5LCBNYXkgMTAsIDIwMjMgODo0MyBBTQ0K Pj4gVG86ICdLeXJ5bG8gVGthY2hvdicgPEt5cnlsby5Ua2FjaG92QGFybS5jb20+OyBnY2MtaGVs cEBnY2MuZ251Lm9yZw0KPj4gU3ViamVjdDogUkU6IENvbmRpdGlvbiBleGVjdXRpb24gb3B0aW1p emF0aW9uIHdpdGggZ2NjIDcuNQ0KPj4NCj4+IEhpLA0KPj4NCj4+IFRoYW5rIGZvciB0aGUgYW5z d2VyLg0KPj4NCj4+IEkgaGFkIGEgbG9vayBhdCB0aGUgd3JvbmcgZnVuY3Rpb24gZGVmaW5pdGlv biwgZ2NjLTcuNS4wL2djYy90YXJnZXQuZGVmOg0KPj4gCURFRkhPT0sNCj4+IAkoaGF2ZV9jb25k aXRpb25hbF9leGVjdXRpb24sDQo+PiAJICJUaGlzIHRhcmdldCBob29rIHJldHVybnMgdHJ1ZSBp ZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbi5cblwNCj4+IAlUaGlz IHRhcmdldCBob29rIGlzIHJlcXVpcmVkIG9ubHkgd2hlbiB0aGUgdGFyZ2V0IGhhcyBzZXZlcmFs IGRpZmZlcmVudFxuXA0KPj4gCW1vZGVzIGFuZCB0aGV5IGhhdmUgZGlmZmVyZW50IGNvbmRpdGlv bmFsIGV4ZWN1dGlvbiBjYXBhYmlsaXR5LCBzdWNoIGFzIEFSTS4iLA0KPj4gCSBib29sLCAodm9p ZCksDQo+PiAJIGRlZmF1bHRfaGF2ZV9jb25kaXRpb25hbF9leGVjdXRpb24pDQo+PiBhbmQgZmlu ZCB0aGlzIG9uZSwgIGdjYy03LjUuMC9nY2MvdGFyZ2hvb2tzLmM6DQo+PiAJYm9vbA0KPj4gCWRl ZmF1bHRfaGF2ZV9jb25kaXRpb25hbF9leGVjdXRpb24gKHZvaWQpDQo+PiAJew0KPj4gCSAgcmV0 dXJuIEhBVkVfY29uZGl0aW9uYWxfZXhlY3V0aW9uOw0KPj4gCX0NCj4+IEZpbmFsbHksIHRoZSBt YWNybyBIQVZFX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbiBpcyBkZWZpbmVkIGhlcmU6DQo+PiBidWls ZC1nY2MvZ2NjL2luc24tY29uZmlnLmgsDQo+Pg0KPj4gSSB3aWxsIGludmVzdGlnYXRlIHRoZSAt bWFyY2ggb3IgLW1jcHUgb3B0aW9uLg0KPj4NCj4+IEFnYWluLCB0aGFua3MgYSBsb3QsDQo+Pg0K Pj4gQmVuamFtaW4gTWluZ3Vleg0KPj4NCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ PiBGcm9tOiBLeXJ5bG8gVGthY2hvdiA8S3lyeWxvLlRrYWNob3ZAYXJtLmNvbT4NCj4+IFNlbnQ6 IFR1ZXNkYXksIE1heSA5LCAyMDIzIDExOjUwIEFNDQo+PiBUbzogQmVuamFtaW4gTWluZ3VleiA8 YmVuamFtaW4ubWluZ3VlekBodWF3ZWkuY29tPjsgDQo+PiBnY2MtaGVscEBnY2MuZ251Lm9yZw0K Pj4gU3ViamVjdDogUkU6IENvbmRpdGlvbiBleGVjdXRpb24gb3B0aW1pemF0aW9uIHdpdGggZ2Nj IDcuNQ0KPj4NCj4+IEhpIEJlbmphbWluLA0KPj4NCj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPj4+IEZyb206IEdjYy1oZWxwIDxnY2MtaGVscC1ib3VuY2VzK2t5cnlsby50a2FjaG92 PWFybS5jb21AZ2NjLmdudS5vcmc+DQo+Pj4gT24gQmVoYWxmIE9mIEJlbmphbWluIE1pbmd1ZXog dmlhIEdjYy1oZWxwDQo+Pj4gU2VudDogVHVlc2RheSwgTWF5IDksIDIwMjMgODo1NCBBTQ0KPj4+ IFRvOiBnY2MtaGVscEBnY2MuZ251Lm9yZw0KPj4+IFN1YmplY3Q6IENvbmRpdGlvbiBleGVjdXRp b24gb3B0aW1pemF0aW9uIHdpdGggZ2NjIDcuNQ0KPj4+DQo+Pj4gSGVsbG8gZXZlcnlvbmUsDQo+ Pj4NCj4+PiBJJ20gdHJ5aW5nIHRvIG9wdGltaXplIGFuIGFwcGxpY2F0aW9uIHRoYXQgY29udGFp bnMgYSBsb3Qgb2YgYnJhbmNoZXMuDQo+Pj4gSSdtIHRhcmdldGluZyBhcm12OCBwcm9jZXNzb3Jz IGFuZCBJJ20gdXNpbmcgR0NDIDcuNS4wIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbi4NCj4+DQo+ PiBPZiBjb3Vyc2UgR0NDIDcuNSBpcyBxdWl0ZSBvbGQgbm93IGJ1dCBpZiB5b3UncmUgZm9yY2Vk IHRvIHVzZSBpdC4uLg0KPj4NCj4+PiBBcyB0aGUgb3JpZ2luYWwgYXBwbGljYXRpb24gaXMgc2lt aWxhciB0byBOR0lOWCwgSSBpbnZlc3RpZ2F0ZWQgb24gDQo+Pj4gTkdJTlguIEknbSBmb2N1c2lu ZyBvbiB0aGUgSFRUUCBoZWFkZXIgcGFyc2luZy4gQmFzaWNhbGx5LCB0aGUgDQo+Pj4gYWxnb3Jp dGhtIHBhcnNlIGJ5dGUgcGVyIGJ5dGUgYW5kIGJhc2VkIG9uIHRoZSB2YWx1ZSBzdG9yZXMgc29t ZSB2YXJpYWJsZXMuDQo+Pj4gSGVyZSBpcyBhbiBleGFtcGxlLCAvc3JjL2h0dHAvbmd4X2h0dHBf cGFyc2UuYzogbmd4X2h0dHBfcGFyc2VfaGVhZGVyX2xpbmUNCj4+PiAgICAgICAgICAgICAgICAg ICBpZiAoYykgew0KPj4+ICAgICAgICAgICAgICAgICAgICAgICBoYXNoID0gbmd4X2hhc2goMCwg Yyk7DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgIHItPmxvd2Nhc2VfaGVhZGVyWzBdID0gYzsN Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgaSA9IDE7DQo+Pj4gICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOw0KPj4+ICAgICAgICAgICAgICAgICAgIH0NCj4+Pg0KPj4+ICAgICAgICAgICAg ICAgICAgIGlmIChjaCA9PSAnXycpIHsNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFs bG93X3VuZGVyc2NvcmVzKSB7DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoID0g bmd4X2hhc2goMCwgY2gpOw0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgci0+bG93Y2Fz ZV9oZWFkZXJbMF0gPSBjaDsNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOw0K Pj4+DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICByLT5pbnZhbGlkX2hlYWRlciA9IDE7DQo+Pj4gICAgICAgICAgICAgICAg ICAgICAgIH0NCj4+Pg0KPj4+ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4+PiAgICAg ICAgICAgICAgICAgICB9DQo+IA0KPiBZb3VyIGV4YW1wbGUgY29kZSBpc24ndCBjb21wbGV0ZSBl bm91Z2ggdG8gZG8gYSBmdWxsIGFuYWx5c2lzLCBidXQgSSBkb3VidCBjb2RlIGxpa2UgdGhpcyB3 b3VsZCBnZW5lcmF0ZSBjb25kaXRpb25hbCBleGVjdXRpb24gYW55d2F5LiAgVGhlcmUgYXJlIHNl dmVyYWwgcmVhc29uczoNCj4gDQo+IDEpIEl0J3MgbGlrZWx5IHRvbyBsb25nIG9uY2UgbWFjaGlu ZSBpbnN0cnVjdGlvbnMgYXJlIGdlbmVyYXRlZA0KPiAyKSBUaGVyZSBhcmUgZnVuY3Rpb24gY2Fs bHMgKG5neF9oYXNoKSBpbiB0aGUgYm9keSBvZiB0aGUgY29uZGl0aW9uYWwgYmxvY2tzIChjYWxs cyBjYW5ub3QgYmUgY29uZGl0aW9uYWxseSBleGVjdXRlZCk7IGlmIHRoZXkgYXJlIGlubGluZWQg dGhlbiBzZWUgMSkgYWJvdmUuDQo+IDMpIHlvdSBoYXZlIG5lc3RlZCBjb25kaXRpb25zIChvbmx5 IHRoZSBpbm5lcm1vc3QgYmxvY2sgY291bGQgYmUgY29uZGl0aW9uYWxseSBleGVjdXRlZCkuDQo+ IDQpIHlvdSB3b3VsZG4ndCB3YW50IHRvIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZSAnaWYgKGFsbG93 X3VuZGVyc2NvcmVzKScNCj4gYW55d2F5IGFzIGl0J3MgcHJvYmFibHkgaGlnaGx5IHByZWRpY3Rh YmxlIGFzIGEgYnJhbmNoLg0KPiANCj4gUi4NCj4gDQo+Pj4gQWxzbywgbW9zdCBvZiBicmFuY2hl cyBhcmUgbm90IHByZWRpY3RhYmxlIGJlY2F1c2UgaXQgY29tcGFyZXMgDQo+Pj4gYWdhaW5zdCBk YXRhIGNvbWluZyBmcm9tIHRoZSBuZXR3b3JrLg0KPj4+ICAgRnJvbSB0aGVzZSBvYnNlcnZhdGlv bnMsIEkgbG9va2VkIGF0IHRoZSBjb25kaXRpb25hbCBleGVjdXRpb24gDQo+Pj4gb3B0aW1pemF0 aW9uIHN0ZXAgaW4gR0NDIGFuZCBJIGZvdW5kIHRoaXMgZnVuY3Rpb24gdGhhdCBzaG91bGQgZG8g dGhlIHdvcms6DQo+Pj4gY29uZF9leGVjX2ZpbmRfaWZfYmxvY2suIEFuZCBob3cgdG8gY3VzdG9t aXplIHRoZSBkZWNpc2lvbiB0byB1c2UgDQo+Pj4gY29uZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zOg0K Pj4NCj4+IC4uLiBUaGlzIHJlbGF0ZXMgdG8gdGhlIGFybSBwb3J0IGkuZS4gdGhlIDMyLWJpdCB0 YXJnZXQgaW4gQXJtdjgtYSwgaXMgdGhhdCB3aGF0IHlvdSdyZSB0YXJnZXRpbmc/DQo+PiBBQXJj aDY0IGhhcyBoYWQgbW9yZSB0dW5pbmcgd29yayBwdXQgaW50byBpdCBvdmVyIHRoZSB5ZWFycyBz byBtYXkgZG8gYmV0dGVyIHBlcmZvcm1hbmNlLXdpc2UgaWYgeW91ciBwcm9jZXNzb3IgYW5kIGVu dmlyb25tZW50IHN1cHBvcnRzIGl0Lg0KPj4gSWYgeW91J3JlIGluZGVlZCBsb29raW5nIGF0IGFy bS4uLg0KPj4NCj4+PiAgICAgICAgICAgICAgICAgICAjZGVmaW5lIE1BWF9DT05ESVRJT05BTF9F WEVDVVRFIA0KPj4+IGFybV9tYXhfY29uZGl0aW9uYWxfZXhlY3V0ZSAoKQ0KPj4+ICAgICAgICAg ICAgICAgICAgIGludA0KPj4+ICAgICAgICAgICAgICAgICAgIGFybV9tYXhfY29uZGl0aW9uYWxf ZXhlY3V0ZSAodm9pZCkNCj4+PiAgICAgICAgICAgICAgICAgICB7DQo+Pj4gICAgICAgICAgICAg ICAgICAgICByZXR1cm4gbWF4X2luc25zX3NraXBwZWQ7DQo+Pj4gICAgICAgICAgICAgICAgICAg fQ0KPj4+ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBpbnQgbWF4X2luc25zX3NraXBwZWQgPSA1 Ow0KPj4+DQo+Pj4gSSB0cmllZCB0byBjb21waWxlIE5HTklYIGluIC1PMiAodGhhdCBzaG91bGQg ZW5hYmxlIGlmLWNvbnZlcnNpb24yKSANCj4+PiBidXQgSSBkaWQgbm90IG5vdGljZWQgYW55IGNo YW5nZSBpbiB0aGUgY29kZS4gSSBlbmFibGUgR0NDIGRlYnVnIA0KPj4+ICgtZGEpIGFuZCBhbHNv IGFkZCBzb21lIGRlYnVnIGluIHRoaXMgZnVuY3Rpb24gYW5kIEkgZmlndXJlIG91dCB0aGF0IA0K Pj4+IHRhcmdldG0uaGF2ZV9jb25kaXRpb25hbF9leGVjdXRpb24gaXMgc2V0IHRvIGZhbHNlLg0K Pj4+DQo+Pj4gRmlyc3QsIGRvIHlvdSBob3cgdG8gc3dpdGNoIHRoaXMgdmFyaWFibGUgdG8gdHJ1 ZS4gSSBndWVzcyBpdCBpcyBhbiANCj4+PiBvcHRpb24gZHVyaW5nIHRoZSBjb25maWd1cmF0aW9u IHN0ZXAgb2YgR0NDLg0KPj4NCj4+IEl0J3MgZGVmaW5pdGlvbiBvbiB0aGF0IGJyYW5jaCBpczoN Cj4+IC8qIE9ubHkgdGh1bWIxIGNhbid0IHN1cHBvcnQgY29uZGl0aW9uYWwgZXhlY3V0aW9uLCBz byByZXR1cm4gdHJ1ZSBpZg0KPj4gICAgICB0aGUgdGFyZ2V0IGlzIG5vdCB0aHVtYjEuICAqLw0K Pj4gc3RhdGljIGJvb2wNCj4+IGFybV9oYXZlX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbiAodm9pZCkg ew0KPj4gICAgIHJldHVybiAhVEFSR0VUX1RIVU1CMTsNCj4+IH0NCj4+DQo+PiBTbyBpdCBsb29r cyBsaWtlIHlvdSdyZSBtYXliZSBub3Qgc2V0dGluZyB0aGUgcmlnaHQgLW1hcmNoIG9yIC1tY3B1 IG9wdGlvbiB0byBlbmFibGUgdGhlIGZ1bGwgYXJtdjgtYSBmZWF0dXJlcz8NCj4+DQo+PiBUaGFu a3MsDQo+PiBLeXJpbGwNCj4+DQo+Pj4gVGhlbiwgSSBrbm93ICB0aGF0IHRoZSBkZWNpc2lvbiB0 byB1c2UgY29uZGl0aW9uYWwgZXhlY3V0aW9uIGlzIA0KPj4+IGJhc2VkIG9uIHRoZSBleHRyYSBj b3N0IGFkZGVkIHRvIGNvbXB1dGUgYm90aCBicmFuY2hlcyBjb21wYXJlIHRvIHRoZSBjb3N0IG9m IGEgYnJhbmNoLg0KPj4+IEluIHRoaXMgc3BlY2lmaWMgY2FzZSwgYnJhbmNoZXMgYXJlIG1pc3Mg cHJlZGljdGVkIGFuZCB0aGUgY29zdCBpcywgaW5kZWVkLCBoaWdoLg0KPj4+IERvIHlvdSB0aGlu ayB0aGF0IGluY3JlYXNpbmcgdGhlIG1heF9pbnNuc19za2lwcGVkIHdpbGwgYmUgZW5vdWdoIHRv IA0KPj4+IGhlbHAgR0NDIHRvIHVzZSBjb25kaXRpb25hbCBleGVjdXRpb24/DQo+Pj4NCj4+PiBU aGFuayB5b3UgaW4gYWR2YW5jZSBmb3IgeW91ciBhbnN3ZXJzLg0KPj4+DQo+Pj4gQmVzdCwNCj4+ PiBCZW5qYW1pbiBNaW5ndWV6DQo+IA0KPiBSLg0KPiANCj4gDQoNCg0K