From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16341 invoked by alias); 19 Aug 2014 18:46:25 -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 16329 invoked by uid 89); 19 Aug 2014 18:46:24 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.0 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-oa0-f48.google.com Received: from mail-oa0-f48.google.com (HELO mail-oa0-f48.google.com) (209.85.219.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 19 Aug 2014 18:46:21 +0000 Received: by mail-oa0-f48.google.com with SMTP id m1so5514039oag.35 for ; Tue, 19 Aug 2014 11:46:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=OxV7CZd15ZjdjaqBCREiHDE2mF31e8KXoENiu8MhhJ0=; b=mDWixeDwtYjyjTSQVilCchEUIYq7BHsfAPD8nn0hne3mEzfe9FjKQZ3+5ityiyjAGk xHESWjcw5y1qwo2WP9yP3Gb+LHwrfOA1liXRF+rlTeu6vo9OLzKTgIMBmTVPK0QxFEpO 4Ig+tx4DL5kC6ZbN3j0wLkeEn+68epZ2346Za7pLSlg2xv621YnlDhzWjSxwjMXtN7wi 05mogQxBJPPcsBYsjcXJASLhF3zEF017dPXRF7fKEkxC35DttT8MmGarUFd/3KugKH0v bGBJ2WtTwt5qA2zY19FKQaI2I4Mm47AjZNQ1T9KK+T9y38M5nhCKoXbGFQa+5pPw63O/ kt8Q== X-Gm-Message-State: ALoCoQln3XOz1yE4vDKgHmrtbaBbjjI2SPq2krVDUwHVH/e0TT9VYNXkZbKFdB00gdIhJHhJj6Vd MIME-Version: 1.0 X-Received: by 10.60.68.41 with SMTP id s9mr29127632oet.30.1408473979796; Tue, 19 Aug 2014 11:46:19 -0700 (PDT) Received: by 10.76.91.138 with HTTP; Tue, 19 Aug 2014 11:46:18 -0700 (PDT) In-Reply-To: References: Date: Tue, 19 Aug 2014 18:46:00 -0000 Message-ID: Subject: Re: [PATCH, PR61776] verify_flow_info failed: control flow in the middle of basic block with -fprofile-generate From: Wei Mi To: Richard Biener Cc: GCC Patches , Jan Hubicka , David Li , Martin Jambor Content-Type: multipart/mixed; boundary=001a113335703dfd1f0500ffe714 X-SW-Source: 2014-08/txt/msg01928.txt.bz2 --001a113335703dfd1f0500ffe714 Content-Type: text/plain; charset=UTF-8 Content-length: 1352 Sorry for the late reply. I took some time to make myself more familiar with NORETURN and related code, and finally I understood what you mean and saw why only GF_CALL_CTRL_ALTERING was enough and GF_CALL_NORETURN was unneeded. With your suggestion, the change looks much briefer! Please check if the new patch attached is ok. bootstrap and regression tests pass on x86_64-linux-gnu. Thanks, Wei. > +static void > +update_no_abnormal_goto_attr (basic_block bb) > +{ > + gimple_stmt_iterator gsi; > + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) > + { > > it should be enough to check these on last stmts of a basic block, no? Yes, that is better. > > That you call update_no_abnormal_goto_attr from two places > before cleanup_tree_cfg_bb suggests you may want to perform > this change in cleanup_control_flow_bb which already looks > at the last stmt only? Changed. > > Btw, I originally had this whole idea of moving flags to the gimple > stmt level because of the "interesting" way we handle the noreturn > attribute (calls to noreturn functions also end basic-blocks). > > Thus would it be possible to turn all these into a single flag, > GF_CALL_CTRL_ALTERING? That is, cover everything > that is_ctrl_altering_stmt covers? I suggest we initialize it at > CFG build time and only ever clear it later. Good idea! --001a113335703dfd1f0500ffe714 Content-Type: text/plain; charset=US-ASCII; name="patch1.txt" Content-Disposition: attachment; filename="patch1.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hz1l02870 Content-length: 18886 Q2hhbmdlTG9nOgoyMDE0LTA4LTE5ICBNYXJ0aW4gSmFtYm9yICA8bWphbWJv ckBzdXNlLmN6PgoJICAgIFdlaSBNaSAgPHdtaUBnb29nbGUuY29tPgoKCVBS IGlwYS82MDQ0OQoJUFIgbWlkZGxlLWVuZC82MTc3NgoJKiB0cmVlLXNzYS1v cGVyYW5kcy5jICh1cGRhdGVfc3RtdF9vcGVyYW5kcyk6IFJlbW92ZQoJTU9E SUZJRURfTk9SRVRVUk5fQ0FMTFMuCgkqIHRyZWUtY2ZnY2xlYW51cC5jIChj bGVhbnVwX2NhbGxfY3RybF9hbHRlcmluZ19mbGFnKTogTmV3IGZ1bmMuCgko Y2xlYW51cF9jb250cm9sX2Zsb3dfYmIpOiBVc2UgY2xlYW51cF9jYWxsX2N0 cmxfYWx0ZXJpbmdfZmxhZy4KCShzcGxpdF9iYl9vbl9ub3JldHVybl9jYWxs cyk6IFJlbmFtZWQgZnJvbSBzcGxpdF9iYnNfb25fbm9yZXR1cm5fY2FsbHMu CgkoY2xlYW51cF90cmVlX2NmZ18xKTogVXNlIHNwbGl0X2JiX29uX25vcmV0 dXJuX2NhbGxzLgoJKiB0cmVlLXNzYW5hbWVzLmg6IFJlbW92ZSBNT0RJRklF RF9OT1JFVFVSTl9DQUxMUy4KCSogZ2ltcGxlLmggKGVudW0gZ2ZfbWFzayk6 IEFkZCBHRl9DQUxMX0NUUkxfQUxURVJJTkcuCgkoZ2ltcGxlX2NhbGxfc2V0 X2N0cmxfYWx0ZXJpbmcpOiBOZXcgZnVuYy4KCShnaW1wbGVfY2FsbF9jdHJs X2FsdGVyaW5nX3ApOiBEaXR0by4KCSogdHJlZS1jZmcuYyAoZ2ltcGxlX2Nh bGxfaW5pdGlhbGl6ZV9jdHJsX2FsdGVyaW5nKTogRGl0dG8uCgkobWFrZV9i bG9ja3MpOiBVc2UgZ2ltcGxlX2NhbGxfaW5pdGlhbGl6ZV9jdHJsX2FsdGVy aW5nLgoJKGlzX2N0cmxfYWx0ZXJpbmdfc3RtdCk6IFVzZSBnaW1wbGVfY2Fs bF9jdHJsX2FsdGVyaW5nX3AuCgkoZXhlY3V0ZV9maXh1cF9jZmcpOiBVc2Ug Z2ltcGxlX2NhbGxfY3RybF9hbHRlcmluZ19wIGFuZAoJcmVtb3ZlIE1PRElG SUVEX05PUkVUVVJOX0NBTExTLgoKMjAxNC0wOC0xOSAgTWFydGluIEphbWJv ciAgPG1qYW1ib3JAc3VzZS5jej4KCSAgICBXZWkgTWkgIDx3bWlAZ29vZ2xl LmNvbT4KCglQUiBpcGEvNjA0NDkKCVBSIG1pZGRsZS1lbmQvNjE3NzYKCSog dGVzdHN1aXRlL2djYy5kZy9sdG8vcHI2MDQ0OV8xLmM6IE5ldyB0ZXN0LgoJ KiB0ZXN0c3VpdGUvZ2NjLmRnL2x0by9wcjYwNDQ5XzAuYzogTmV3IHRlc3Qu CgkqIHRlc3RzdWl0ZS9nY2MuZGcvcHI2MTc3Ni5jOiBOZXcgdGVzdC4KCklu ZGV4OiB0cmVlLXNzYS1vcGVyYW5kcy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHRyZWUtc3NhLW9wZXJhbmRzLmMJKHJldmlzaW9uIDIxMjQ0MikK KysrIHRyZWUtc3NhLW9wZXJhbmRzLmMJKHdvcmtpbmcgY29weSkKQEAgLTEw ODcsMTIgKzEwODcsNiBAQCB1cGRhdGVfc3RtdF9vcGVyYW5kcyAoc3RydWN0 IGZ1bmN0aW9uICpmCiAKICAgdGltZXZhcl9wdXNoIChUVl9UUkVFX09QUyk7 CiAKLSAgLyogSWYgdGhlIHN0bXQgaXMgYSBub3JldHVybiBjYWxsIHF1ZXVl IGl0IHRvIGJlIHByb2Nlc3NlZCBieQotICAgICBzcGxpdF9iYnNfb25fbm9y ZXR1cm5fY2FsbHMgZHVyaW5nIGNmZyBjbGVhbnVwLiAgKi8KLSAgaWYgKGlz X2dpbXBsZV9jYWxsIChzdG10KQotICAgICAgJiYgZ2ltcGxlX2NhbGxfbm9y ZXR1cm5fcCAoc3RtdCkpCi0gICAgdmVjX3NhZmVfcHVzaCAoTU9ESUZJRURf Tk9SRVRVUk5fQ0FMTFMgKGZuKSwgc3RtdCk7Ci0KICAgZ2NjX2Fzc2VydCAo Z2ltcGxlX21vZGlmaWVkX3AgKHN0bXQpKTsKICAgYnVpbGRfc3NhX29wZXJh bmRzIChmbiwgc3RtdCk7CiAgIGdpbXBsZV9zZXRfbW9kaWZpZWQgKHN0bXQs IGZhbHNlKTsKSW5kZXg6IHRyZWUtY2ZnY2xlYW51cC5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHRyZWUtY2ZnY2xlYW51cC5jCShyZXZpc2lvbiAy MTI0NDIpCisrKyB0cmVlLWNmZ2NsZWFudXAuYwkod29ya2luZyBjb3B5KQpA QCAtMTYyLDYgKzE2MiwyMyBAQCBjbGVhbnVwX2NvbnRyb2xfZXhwcl9ncmFw aCAoYmFzaWNfYmxvY2sKICAgcmV0dXJuIHJldHZhbDsKIH0KIAorLyogQ2xl YW51cCB0aGUgR0ZfQ0FMTF9DVFJMX0FMVEVSSU5HIGZsYWcgYWNjb3JkaW5n IHRvCisgICB0byB1cGRhdGVkIGdpbXBsZV9jYWxsX2ZsYWdzLiAgKi8KKwor c3RhdGljIHZvaWQKK2NsZWFudXBfY2FsbF9jdHJsX2FsdGVyaW5nX2ZsYWcg KGdpbXBsZSBiYl9lbmQpCit7CisgIGlmICghaXNfZ2ltcGxlX2NhbGwgKGJi X2VuZCkKKyAgICAgIHx8ICFnaW1wbGVfY2FsbF9jdHJsX2FsdGVyaW5nX3Ag KGJiX2VuZCkpCisgICAgcmV0dXJuOworCisgIGludCBmbGFncyA9IGdpbXBs ZV9jYWxsX2ZsYWdzIChiYl9lbmQpOworICBpZiAoKChmbGFncyAmIChFQ0Zf Q09OU1QgfCBFQ0ZfUFVSRSkpCisgICAgICAgJiYgIShmbGFncyAmIEVDRl9M T09QSU5HX0NPTlNUX09SX1BVUkUpKQorICAgICAgfHwgKGZsYWdzICYgRUNG X0xFQUYpKQorICAgIGdpbXBsZV9jYWxsX3NldF9jdHJsX2FsdGVyaW5nIChi Yl9lbmQsIGZhbHNlKTsKK30KKwogLyogVHJ5IHRvIHJlbW92ZSBzdXBlcmZs dW91cyBjb250cm9sIHN0cnVjdHVyZXMgaW4gYmFzaWMgYmxvY2sgQkIuICBS ZXR1cm5zCiAgICB0cnVlIGlmIGFueXRoaW5nIGNoYW5nZXMuICAqLwogCkBA IC0xODIsNiArMTk5LDkgQEAgY2xlYW51cF9jb250cm9sX2Zsb3dfYmIgKGJh c2ljX2Jsb2NrIGJiKQogCiAgIHN0bXQgPSBnc2lfc3RtdCAoZ3NpKTsKIAor ICAvKiBUcnkgdG8gY2xlYW51cCBjdHJsIGFsdGVyaW5nIGZsYWcgZm9yIGNh bGwgd2hpY2ggZW5kcyBiYi4gICovCisgIGNsZWFudXBfY2FsbF9jdHJsX2Fs dGVyaW5nX2ZsYWcgKHN0bXQpOworCiAgIGlmIChnaW1wbGVfY29kZSAoc3Rt dCkgPT0gR0lNUExFX0NPTkQKICAgICAgIHx8IGdpbXBsZV9jb2RlIChzdG10 KSA9PSBHSU1QTEVfU1dJVENIKQogICAgIHJldHZhbCB8PSBjbGVhbnVwX2Nv bnRyb2xfZXhwcl9ncmFwaCAoYmIsIGdzaSk7CkBAIC01OTQsMzAgKzYxNCwy NCBAQCBmaXh1cF9ub3JldHVybl9jYWxsIChnaW1wbGUgc3RtdCkKICAgIGtu b3duIG5vdCB0byByZXR1cm4sIGFuZCByZW1vdmUgdGhlIHVucmVhY2hhYmxl IGNvZGUuICAqLwogCiBzdGF0aWMgYm9vbAotc3BsaXRfYmJzX29uX25vcmV0 dXJuX2NhbGxzICh2b2lkKQorc3BsaXRfYmJfb25fbm9yZXR1cm5fY2FsbHMg KGJhc2ljX2Jsb2NrIGJiKQogewogICBib29sIGNoYW5nZWQgPSBmYWxzZTsK LSAgZ2ltcGxlIHN0bXQ7Ci0gIGJhc2ljX2Jsb2NrIGJiOworICBnaW1wbGVf c3RtdF9pdGVyYXRvciBnc2k7CiAKLSAgLyogRGV0ZWN0IGNhc2VzIHdoZXJl IGEgbWlkLWJsb2NrIGNhbGwgaXMgbm93IGtub3duIG5vdCB0byByZXR1cm4u ICAqLwotICBpZiAoY2Z1bi0+Z2ltcGxlX2RmKQotICAgIHdoaWxlICh2ZWNf c2FmZV9sZW5ndGggKE1PRElGSUVEX05PUkVUVVJOX0NBTExTIChjZnVuKSkp Ci0gICAgICB7Ci0Jc3RtdCA9IE1PRElGSUVEX05PUkVUVVJOX0NBTExTIChj ZnVuKS0+cG9wICgpOwotCWJiID0gZ2ltcGxlX2JiIChzdG10KTsKLQkvKiBC QiBtaWdodCBiZSBkZWxldGVkIGF0IHRoaXMgcG9pbnQsIHNvIHZlcmlmeSBm aXJzdAotCSAgIEJCIGlzIHByZXNlbnQgaW4gdGhlIGNmZy4gICovCi0JaWYg KGJiID09IE5VTEwKLQkgICAgfHwgYmItPmluZGV4IDwgTlVNX0ZJWEVEX0JM T0NLUwotCSAgICB8fCBiYi0+aW5kZXggPj0gbGFzdF9iYXNpY19ibG9ja19m b3JfZm4gKGNmdW4pCi0JICAgIHx8IEJBU0lDX0JMT0NLX0ZPUl9GTiAoY2Z1 biwgYmItPmluZGV4KSAhPSBiYgotCSAgICB8fCAhZ2ltcGxlX2NhbGxfbm9y ZXR1cm5fcCAoc3RtdCkpCi0JICBjb250aW51ZTsKKyAgZm9yIChnc2kgPSBn c2lfc3RhcnRfYmIgKGJiKTsgIWdzaV9lbmRfcCAoZ3NpKTsgZ3NpX25leHQg KCZnc2kpKQorICAgIHsKKyAgICAgIGdpbXBsZSBzdG10ID0gZ3NpX3N0bXQg KGdzaSk7CisKKyAgICAgIGlmICghaXNfZ2ltcGxlX2NhbGwgKHN0bXQpKQor CWNvbnRpbnVlOwogCisgICAgICBpZiAoZ2ltcGxlX2NhbGxfbm9yZXR1cm5f cCAoc3RtdCkpCiAJY2hhbmdlZCB8PSBmaXh1cF9ub3JldHVybl9jYWxsIChz dG10KTsKLSAgICAgIH0KKyAgICB9CiAKKyAgaWYgKGNoYW5nZWQpCisgICAg Yml0bWFwX3NldF9iaXQgKGNmZ2NsZWFudXBfYWx0ZXJlZF9iYnMsIGJiLT5p bmRleCk7CiAgIHJldHVybiBjaGFuZ2VkOwogfQogCkBAIC02NTUsOCArNjY5 LDYgQEAgY2xlYW51cF90cmVlX2NmZ18xICh2b2lkKQogICBiYXNpY19ibG9j ayBiYjsKICAgdW5zaWduZWQgaSwgbjsKIAotICByZXR2YWwgfD0gc3BsaXRf YmJzX29uX25vcmV0dXJuX2NhbGxzICgpOwotCiAgIC8qIFByZXBhcmUgdGhl IHdvcmtsaXN0cyBvZiBhbHRlcmVkIGJsb2Nrcy4gICovCiAgIGNmZ2NsZWFu dXBfYWx0ZXJlZF9iYnMgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOwogCkBAIC02 NzIsNyArNjg0LDEwIEBAIGNsZWFudXBfdHJlZV9jZmdfMSAodm9pZCkKICAg ICB7CiAgICAgICBiYiA9IEJBU0lDX0JMT0NLX0ZPUl9GTiAoY2Z1biwgaSk7 CiAgICAgICBpZiAoYmIpCi0JcmV0dmFsIHw9IGNsZWFudXBfdHJlZV9jZmdf YmIgKGJiKTsKKwl7CisJICByZXR2YWwgfD0gY2xlYW51cF90cmVlX2NmZ19i YiAoYmIpOworCSAgcmV0dmFsIHw9IHNwbGl0X2JiX29uX25vcmV0dXJuX2Nh bGxzIChiYik7CisJfQogICAgIH0KIAogICAvKiBOb3cgcHJvY2VzcyB0aGUg YWx0ZXJlZCBibG9ja3MsIGFzIGxvbmcgYXMgYW55IGFyZSBhdmFpbGFibGUu ICAqLwpAQCAtNjg5LDkgKzcwNCw5IEBAIGNsZWFudXBfdHJlZV9jZmdfMSAo dm9pZCkKIAogICAgICAgcmV0dmFsIHw9IGNsZWFudXBfdHJlZV9jZmdfYmIg KGJiKTsKIAotICAgICAgLyogUmVydW4gc3BsaXRfYmJzX29uX25vcmV0dXJu X2NhbGxzLCBpbiBjYXNlIHdlIGhhdmUgYWx0ZXJlZCBhbnkgbm9yZXR1cm4K KyAgICAgIC8qIFJlcnVuIHNwbGl0X2JiX29uX25vcmV0dXJuX2NhbGxzLCBp biBjYXNlIHdlIGhhdmUgYWx0ZXJlZCBhbnkgbm9yZXR1cm4KIAkgY2FsbHMu ICAqLwotICAgICAgcmV0dmFsIHw9IHNwbGl0X2Jic19vbl9ub3JldHVybl9j YWxscyAoKTsKKyAgICAgIHJldHZhbCB8PSBzcGxpdF9iYl9vbl9ub3JldHVy bl9jYWxscyAoYmIpOwogICAgIH0KIAogICBlbmRfcmVjb3JkaW5nX2Nhc2Vf bGFiZWxzICgpOwpJbmRleDogdHJlZS1zc2FuYW1lcy5oCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHRyZWUtc3NhbmFtZXMuaAkocmV2aXNpb24gMjEy NDQyKQorKysgdHJlZS1zc2FuYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01 Nyw3ICs1Nyw2IEBAIHN0cnVjdCBHVFkgKCh2YXJpYWJsZV9zaXplKSkgcmFu Z2VfaW5mb18KIAogCiAjZGVmaW5lIFNTQU5BTUVTKGZ1bikgKGZ1biktPmdp bXBsZV9kZi0+c3NhX25hbWVzCi0jZGVmaW5lIE1PRElGSUVEX05PUkVUVVJO X0NBTExTKGZ1bikgKGZ1biktPmdpbXBsZV9kZi0+bW9kaWZpZWRfbm9yZXR1 cm5fY2FsbHMKICNkZWZpbmUgREVGQVVMVF9ERUZTKGZ1bikgKGZ1biktPmdp bXBsZV9kZi0+ZGVmYXVsdF9kZWZzCiAKICNkZWZpbmUgbnVtX3NzYV9uYW1l cyAodmVjX3NhZmVfbGVuZ3RoIChjZnVuLT5naW1wbGVfZGYtPnNzYV9uYW1l cykpCkluZGV4OiBnaW1wbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnaW1wbGUuaAkocmV2aXNpb24gMjEyNDQyKQorKysgZ2ltcGxlLmgJKHdv cmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBnZl9tYXNrIHsK ICAgICBHRl9DQUxMX05PVEhST1cJCT0gMSA8PCA0LAogICAgIEdGX0NBTExf QUxMT0NBX0ZPUl9WQVIJPSAxIDw8IDUsCiAgICAgR0ZfQ0FMTF9JTlRFUk5B TAkJPSAxIDw8IDYsCisgICAgR0ZfQ0FMTF9DVFJMX0FMVEVSSU5HICAgICAg ID0gMSA8PCA3LAogICAgIEdGX09NUF9QQVJBTExFTF9DT01CSU5FRAk9IDEg PDwgMCwKICAgICBHRl9PTVBfRk9SX0tJTkRfTUFTSwk9ICgxIDw8IDIpIC0g MSwKICAgICBHRl9PTVBfRk9SX0tJTkRfRk9SCQk9IDAsCkBAIC0yNDU4LDYg KzI0NTksMjkgQEAgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfZm4gKGNvbnN0X2dp bXBsZSBncwogICByZXR1cm4gc3RhdGljX2Nhc3QgPGNvbnN0IGdpbXBsZV9z dGF0ZW1lbnRfY2FsbCAqPiAoZ3MpLT51LmludGVybmFsX2ZuOwogfQogCisv KiBJZiBDVFJMX0FMVEVSSU5HX1AgaXMgdHJ1ZSwgbWFyayBHSU1QTEVfQ0FM TCBTIHRvIGJlIGEgc3RtdAorICAgdGhhdCBjb3VsZCBhbHRlciBjb250cm9s IGZsb3cuICAqLworCitzdGF0aWMgaW5saW5lIHZvaWQKK2dpbXBsZV9jYWxs X3NldF9jdHJsX2FsdGVyaW5nIChnaW1wbGUgcywgYm9vbCBjdHJsX2FsdGVy aW5nX3ApCit7CisgIEdJTVBMRV9DSEVDSyAocywgR0lNUExFX0NBTEwpOwor ICBpZiAoY3RybF9hbHRlcmluZ19wKQorICAgIHMtPnN1YmNvZGUgfD0gR0Zf Q0FMTF9DVFJMX0FMVEVSSU5HOworICBlbHNlCisgICAgcy0+c3ViY29kZSAm PSB+R0ZfQ0FMTF9DVFJMX0FMVEVSSU5HOworfQorCisvKiBSZXR1cm4gdHJ1 ZSBpZiBjYWxsIEdTIGNhbGxzIGFuIGZ1bmMgd2hvc2UgR0ZfQ0FMTF9DVFJM X0FMVEVSSU5HCisgICBmbGFnIGlzIHNldC4gU3VjaCBjYWxsIGNvdWxkIG5v dCBiZSBhIHN0bXQgaW4gdGhlIG1pZGRsZSBvZiBhIGJiLiAgKi8KKworc3Rh dGljIGlubGluZSBib29sCitnaW1wbGVfY2FsbF9jdHJsX2FsdGVyaW5nX3Ag KGNvbnN0X2dpbXBsZSBncykKK3sKKyAgR0lNUExFX0NIRUNLIChncywgR0lN UExFX0NBTEwpOworICByZXR1cm4gKGdzLT5zdWJjb2RlICYgR0ZfQ0FMTF9D VFJMX0FMVEVSSU5HKSAhPSAwOworfQorCiAKIC8qIFJldHVybiB0aGUgZnVu Y3Rpb24gdHlwZSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVkIGJ5IEdTLiAgKi8K IApJbmRleDogdHJlZS1jZmcuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSB0cmVlLWNmZy5jCShyZXZpc2lvbiAyMTI0NDIpCisrKyB0cmVlLWNmZy5j CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDcgQEAgc3RhdGljIGlu dCBnaW1wbGVfdmVyaWZ5X2Zsb3dfaW5mbyAodm9pZAogc3RhdGljIHZvaWQg Z2ltcGxlX21ha2VfZm9yd2FyZGVyX2Jsb2NrIChlZGdlKTsKIHN0YXRpYyBn aW1wbGUgZmlyc3Rfbm9uX2xhYmVsX3N0bXQgKGJhc2ljX2Jsb2NrKTsKIHN0 YXRpYyBib29sIHZlcmlmeV9naW1wbGVfdHJhbnNhY3Rpb24gKGdpbXBsZSk7 CitzdGF0aWMgYm9vbCBjYWxsX2Nhbl9tYWtlX2Fibm9ybWFsX2dvdG8gKGdp bXBsZSk7CiAKIC8qIEZsb3dncmFwaCBvcHRpbWl6YXRpb24gYW5kIGNsZWFu dXAuICAqLwogc3RhdGljIHZvaWQgZ2ltcGxlX21lcmdlX2Jsb2NrcyAoYmFz aWNfYmxvY2ssIGJhc2ljX2Jsb2NrKTsKQEAgLTQzNyw2ICs0MzgsMzIgQEAg YXNzZXJ0X3VucmVhY2hhYmxlX2ZhbGx0aHJ1X2VkZ2VfcCAoZWRnZQogfQog CiAKKy8qIEluaXRpYWxpemUgR0ZfQ0FMTF9DVFJMX0FMVEVSSU5HIGZsYWcs IHdoaWNoIGluZGljYXRlcyB0aGUgY2FsbAorICAgY291bGQgYWx0ZXIgY29u dHJvbCBmbG93IGV4Y2VwdCB2aWEgZWguIFdlIGluaXRpYWxpemUgdGhlIGZs YWcgYXQKKyAgIENGRyBidWlsZCB0aW1lIGFuZCBvbmx5IGV2ZXIgY2xlYXIg aXQgbGF0ZXIuICAqLworCitzdGF0aWMgdm9pZAorZ2ltcGxlX2NhbGxfaW5p dGlhbGl6ZV9jdHJsX2FsdGVyaW5nIChnaW1wbGUgc3RtdCkKK3sKKyAgaW50 IGZsYWdzID0gZ2ltcGxlX2NhbGxfZmxhZ3MgKHN0bXQpOworCisgIC8qIEEg Y2FsbCBhbHRlcnMgY29udHJvbCBmbG93IGlmIGl0IGNhbiBtYWtlIGFuIGFi bm9ybWFsIGdvdG8uICAqLworICBpZiAoY2FsbF9jYW5fbWFrZV9hYm5vcm1h bF9nb3RvIChzdG10KQorICAgICAgLyogQSBjYWxsIGFsc28gYWx0ZXJzIGNv bnRyb2wgZmxvdyBpZiBpdCBkb2VzIG5vdCByZXR1cm4uICAqLworICAgICAg fHwgZmxhZ3MgJiBFQ0ZfTk9SRVRVUk4KKyAgICAgIC8qIFRNIGVuZGluZyBz dGF0ZW1lbnRzIGhhdmUgYmFja2VkZ2VzIG91dCBvZiB0aGUgdHJhbnNhY3Rp b24uCisJIFJldHVybiB0cnVlIHNvIHdlIHNwbGl0IHRoZSBiYXNpYyBibG9j ayBjb250YWluaW5nIHRoZW0uCisJIE5vdGUgdGhhdCB0aGUgVE1fQlVJTFRJ TiB0ZXN0IGlzIG1lcmVseSBhbiBvcHRpbWl6YXRpb24uICAqLworICAgICAg fHwgKChmbGFncyAmIEVDRl9UTV9CVUlMVElOKQorCSAgJiYgaXNfdG1fZW5k aW5nX2ZuZGVjbCAoZ2ltcGxlX2NhbGxfZm5kZWNsIChzdG10KSkpCisgICAg ICAvKiBCVUlMVF9JTl9SRVRVUk4gY2FsbCBpcyBzYW1lIGFzIHJldHVybiBz dGF0ZW1lbnQuICAqLworICAgICAgfHwgZ2ltcGxlX2NhbGxfYnVpbHRpbl9w IChzdG10LCBCVUlMVF9JTl9SRVRVUk4pKQorICAgIGdpbXBsZV9jYWxsX3Nl dF9jdHJsX2FsdGVyaW5nIChzdG10LCB0cnVlKTsKKyAgZWxzZQorICAgIGdp bXBsZV9jYWxsX3NldF9jdHJsX2FsdGVyaW5nIChzdG10LCBmYWxzZSk7Cit9 CisKKwogLyogQnVpbGQgYSBmbG93Z3JhcGggZm9yIHRoZSBzZXF1ZW5jZSBv ZiBzdG10cyBTRVEuICAqLwogCiBzdGF0aWMgdm9pZApAQCAtNDU1LDYgKzQ4 Miw5IEBAIG1ha2VfYmxvY2tzIChnaW1wbGVfc2VxIHNlcSkKICAgICAgIHBy ZXZfc3RtdCA9IHN0bXQ7CiAgICAgICBzdG10ID0gZ3NpX3N0bXQgKGkpOwog CisgICAgICBpZiAoc3RtdCAmJiBpc19naW1wbGVfY2FsbCAoc3RtdCkpCisJ Z2ltcGxlX2NhbGxfaW5pdGlhbGl6ZV9jdHJsX2FsdGVyaW5nIChzdG10KTsK KwogICAgICAgLyogSWYgdGhlIHN0YXRlbWVudCBzdGFydHMgYSBuZXcgYmFz aWMgYmxvY2sgb3IgaWYgd2UgaGF2ZSBkZXRlcm1pbmVkCiAJIGluIGEgcHJl dmlvdXMgcGFzcyB0aGF0IHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IGJsb2Nr IGZvciBTVE1ULCBkbwogCSBzbyBub3cuICAqLwpAQCAtMjM3NCwyOCArMjQw NCwxMCBAQCBpc19jdHJsX2FsdGVyaW5nX3N0bXQgKGdpbXBsZSB0KQogICBz d2l0Y2ggKGdpbXBsZV9jb2RlICh0KSkKICAgICB7CiAgICAgY2FzZSBHSU1Q TEVfQ0FMTDoKLSAgICAgIHsKLQlpbnQgZmxhZ3MgPSBnaW1wbGVfY2FsbF9m bGFncyAodCk7Ci0KLQkvKiBBIGNhbGwgYWx0ZXJzIGNvbnRyb2wgZmxvdyBp ZiBpdCBjYW4gbWFrZSBhbiBhYm5vcm1hbCBnb3RvLiAgKi8KLQlpZiAoY2Fs bF9jYW5fbWFrZV9hYm5vcm1hbF9nb3RvICh0KSkKLQkgIHJldHVybiB0cnVl OwotCi0JLyogQSBjYWxsIGFsc28gYWx0ZXJzIGNvbnRyb2wgZmxvdyBpZiBp dCBkb2VzIG5vdCByZXR1cm4uICAqLwotCWlmIChmbGFncyAmIEVDRl9OT1JF VFVSTikKLQkgIHJldHVybiB0cnVlOwotCi0JLyogVE0gZW5kaW5nIHN0YXRl bWVudHMgaGF2ZSBiYWNrZWRnZXMgb3V0IG9mIHRoZSB0cmFuc2FjdGlvbi4K LQkgICBSZXR1cm4gdHJ1ZSBzbyB3ZSBzcGxpdCB0aGUgYmFzaWMgYmxvY2sg Y29udGFpbmluZyB0aGVtLgotCSAgIE5vdGUgdGhhdCB0aGUgVE1fQlVJTFRJ TiB0ZXN0IGlzIG1lcmVseSBhbiBvcHRpbWl6YXRpb24uICAqLwotCWlmICgo ZmxhZ3MgJiBFQ0ZfVE1fQlVJTFRJTikKLQkgICAgJiYgaXNfdG1fZW5kaW5n X2ZuZGVjbCAoZ2ltcGxlX2NhbGxfZm5kZWNsICh0KSkpCi0JICByZXR1cm4g dHJ1ZTsKLQotCS8qIEJVSUxUX0lOX1JFVFVSTiBjYWxsIGlzIHNhbWUgYXMg cmV0dXJuIHN0YXRlbWVudC4gICovCi0JaWYgKGdpbXBsZV9jYWxsX2J1aWx0 aW5fcCAodCwgQlVJTFRfSU5fUkVUVVJOKSkKLQkgIHJldHVybiB0cnVlOwot ICAgICAgfQorICAgICAgLyogUGVyIHN0bXQgY2FsbCBmbGFnIGluZGljYXRl cyB3aGV0aGVyIHRoZSBjYWxsIGNvdWxkIGFsdGVyCisJIGNvbnRyb2xmbG93 LiAgKi8KKyAgICAgIGlmIChnaW1wbGVfY2FsbF9jdHJsX2FsdGVyaW5nX3Ag KHQpKQorCXJldHVybiB0cnVlOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNl IEdJTVBMRV9FSF9ESVNQQVRDSDoKQEAgLTg1NDcsNiArODU1OSw4IEBAIGV4 ZWN1dGVfZml4dXBfY2ZnICh2b2lkKQogCQkgICYmICghaXNfZ2ltcGxlX2Nh bGwgKHN0bXQpCiAJCSAgICAgIHx8IChnaW1wbGVfY2FsbF9mbGFncyAoc3Rt dCkgJiBFQ0ZfTk9SRVRVUk4pID09IDApKSkKIAkgICAgeworCSAgICAgIGlm IChzdG10ICYmIGlzX2dpbXBsZV9jYWxsIChzdG10KSkKKwkJZ2ltcGxlX2Nh bGxfc2V0X2N0cmxfYWx0ZXJpbmcgKHN0bXQsIGZhbHNlKTsKIAkgICAgICBz dG10ID0gZ2ltcGxlX2J1aWxkX2NhbGwKIAkJICAoYnVpbHRpbl9kZWNsX2lt cGxpY2l0IChCVUlMVF9JTl9VTlJFQUNIQUJMRSksIDApOwogCSAgICAgIGdp bXBsZV9zdG10X2l0ZXJhdG9yIGdzaSA9IGdzaV9sYXN0X2JiIChiYik7CkBA IC04NTU3LDEwICs4NTcxLDYgQEAgZXhlY3V0ZV9maXh1cF9jZmcgKHZvaWQp CiAgIGlmIChjb3VudF9zY2FsZSAhPSBSRUdfQlJfUFJPQl9CQVNFKQogICAg IGNvbXB1dGVfZnVuY3Rpb25fZnJlcXVlbmN5ICgpOwogCi0gIC8qIFdlIGp1 c3QgcHJvY2Vzc2VkIGFsbCBjYWxscy4gICovCi0gIGlmIChjZnVuLT5naW1w bGVfZGYpCi0gICAgdmVjX2ZyZWUgKE1PRElGSUVEX05PUkVUVVJOX0NBTExT IChjZnVuKSk7Ci0KICAgLyogRHVtcCBhIHRleHR1YWwgcmVwcmVzZW50YXRp b24gb2YgdGhlIGZsb3dncmFwaC4gICovCiAgIGlmIChkdW1wX2ZpbGUpCiAg ICAgZ2ltcGxlX2R1bXBfY2ZnIChkdW1wX2ZpbGUsIGR1bXBfZmxhZ3MpOwpJ bmRleDogdGVzdHN1aXRlL2djYy5kZy9sdG8vcHI2MDQ0OV8xLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gdGVzdHN1aXRlL2djYy5kZy9sdG8vcHI2 MDQ0OV8xLmMJKHJldmlzaW9uIDApCisrKyB0ZXN0c3VpdGUvZ2NjLmRnL2x0 by9wcjYwNDQ5XzEuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAor ZXh0ZXJuIGludCBwcmludGYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m b3JtYXQsIC4uLik7Cit0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90OwordHlw ZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Oworc3RydWN0IHRpbWV2YWwK KyAgeworICAgIF9fdGltZV90IHR2X3NlYzsKKyAgICBfX3N1c2Vjb25kc190 IHR2X3VzZWM7CisgIH07CitzdHJ1Y3QgdGltZXpvbmUKKyAgeworICAgIGlu dCB0el9taW51dGVzd2VzdDsKKyAgICBpbnQgdHpfZHN0dGltZTsKKyAgfTsK K3R5cGVkZWYgc3RydWN0IHRpbWV6b25lICpfX3Jlc3RyaWN0IF9fdGltZXpv bmVfcHRyX3Q7CitleHRlcm4gaW50IGdldHRpbWVvZmRheSAoc3RydWN0IHRp bWV2YWwgKl9fcmVzdHJpY3QgX190diwKKyAgICBfX3RpbWV6b25lX3B0cl90 IF9fdHopIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOworCit0eXBl ZGVmIGxvbmcgaW50IF9fam1wX2J1Zls4XTsKK3R5cGVkZWYgc3RydWN0Cisg IHsKKyAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICog c2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07CisgIH0gX19zaWdzZXRf dDsKK3N0cnVjdCBfX2ptcF9idWZfdGFnCisgIHsKKyAgICBfX2ptcF9idWYg X19qbXBidWY7CisgICAgaW50IF9fbWFza193YXNfc2F2ZWQ7CisgICAgX19z aWdzZXRfdCBfX3NhdmVkX21hc2s7CisgIH07Cit0eXBlZGVmIHN0cnVjdCBf X2ptcF9idWZfdGFnIGptcF9idWZbMV07CisKK2V4dGVybiBpbnQgc2V0am1w IChqbXBfYnVmIF9fZW52KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KTsKK2V4dGVybiB2b2lkIGxvbmdqbXAgKHN0cnVjdCBfX2ptcF9idWZfdGFn IF9fZW52WzFdLCBpbnQgX192YWwpCisgICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK KworZXh0ZXJuIGludCBiYXIgKHZvaWQpOworCitpbnQgX19hdHRyaWJ1dGVf XyAoKG5vaW5saW5lLCBub2Nsb25lKSkKK2dldF9pbnB1dCAodm9pZCkKK3sK KyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBqbXBfYnVmIGJ1ZjsKKworaW50 IGZvbyAodm9pZCkKK3sKKyAgaWYgKGdldF9pbnB1dCAoKSkKKyAgICBsb25n am1wKGJ1ZiwgMSk7CisgIHJldHVybiAwOworfQorCit2b2xhdGlsZSBpbnQg ejsKKworCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgc3RydWN0IHRpbWV2YWwg dHY7CisgIHN0cnVjdCB0aW1lem9uZSB0ejsKKworICBiYXIoKTsKKyAgaWYg KHNldGptcCAoYnVmKSkKKyAgICByZXR1cm4gMTsKKworICBpZiAoIWdldF9p bnB1dCAoKSkKKyAgICB7CisgICAgICBnZXR0aW1lb2ZkYXkgKCZ0diwgJnR6 KTsKKyAgICAgIHogPSAwOworICAgICAgcHJpbnRmICgiVGhpcyBpcyBmcm9t IG1haW4gJWlcbiIsIHR6LnR6X2RzdHRpbWUpOworICAgIH0KKworICBmb28g KCk7CisgIGJhciAoKTsKKyAgYmFyICgpOworCisgIHJldHVybiAwOworfQpJ bmRleDogdGVzdHN1aXRlL2djYy5kZy9sdG8vcHI2MDQ0OV8wLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gdGVzdHN1aXRlL2djYy5kZy9sdG8vcHI2 MDQ0OV8wLmMJKHJldmlzaW9uIDApCisrKyB0ZXN0c3VpdGUvZ2NjLmRnL2x0 by9wcjYwNDQ5XzAuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAor LyogeyBkZy1sdG8tZG8gbGluayB9ICovCisKK2V4dGVybiBpbnQgcHJpbnRm IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwordHlw ZWRlZiBsb25nIGludCBfX3RpbWVfdDsKK3R5cGVkZWYgbG9uZyBpbnQgX19z dXNlY29uZHNfdDsKKworc3RydWN0IHRpbWV2YWwKKyAgeworICAgIF9fdGlt ZV90IHR2X3NlYzsKKyAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CisgIH07 CisKK3N0cnVjdCB0aW1lem9uZQorICB7CisgICAgaW50IHR6X21pbnV0ZXN3 ZXN0OworICAgIGludCB0el9kc3R0aW1lOworICB9OwordHlwZWRlZiBzdHJ1 Y3QgdGltZXpvbmUgKl9fcmVzdHJpY3QgX190aW1lem9uZV9wdHJfdDsKKwor ZXh0ZXJuIGludCBnZXR0aW1lb2ZkYXkgKHN0cnVjdCB0aW1ldmFsICpfX3Jl c3RyaWN0IF9fdHYsIF9fdGltZXpvbmVfcHRyX3QgX190eik7CisKK2ludCBi YXIgKHZvaWQpCit7CisgIHN0cnVjdCB0aW1ldmFsIHR2OworICBzdHJ1Y3Qg dGltZXpvbmUgdHo7CisKKyAgZ2V0dGltZW9mZGF5ICgmdHYsICZ0eik7Cisg IHByaW50ZiAoIlRoaXMgaXMgZnJvbSBiYXIgJWlcbiIsIHR6LnR6X2RzdHRp bWUpOworICByZXR1cm4gNTsKK30KSW5kZXg6IHRlc3RzdWl0ZS9nY2MuZGcv cHI2MTc3Ni5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0 ZS9nY2MuZGcvcHI2MTc3Ni5jCShyZXZpc2lvbiAwKQorKysgdGVzdHN1aXRl L2djYy5kZy9wcjYxNzc2LmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcg QEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1PMiAtZnByb2ZpbGUtZ2VuZXJhdGUiIH0gKi8KKworI2luY2x1ZGUgPHNl dGptcC5oPgorCitpbnQgY29uZDEsIGNvbmQyOworCitpbnQgZ29vKCkgX19h dHRyaWJ1dGVfXygobm9pbmxpbmUpKTsKKworaW50IGdvbygpIHsKKyBpZiAo Y29uZDEpCisgICByZXR1cm4gMTsKKyBlbHNlCisgICByZXR1cm4gMjsKK30K Kworam1wX2J1ZiBlbnY7CitpbnQgZm9vKCkgeworIGludCBhOworCisgc2V0 am1wKGVudik7CisgaWYgKGNvbmQyKQorICAgYSA9IGdvbygpOworIGVsc2UK KyAgIGEgPSAzOworIHJldHVybiBhOworfQoK --001a113335703dfd1f0500ffe714--