From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15589 invoked by alias); 11 May 2015 07:23:55 -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 15128 invoked by uid 89); 11 May 2015 07:23:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.0 required=5.0 tests=AWL,BAYES_99,BAYES_999,FREEMAIL_FROM,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-ob0-f172.google.com Received: from mail-ob0-f172.google.com (HELO mail-ob0-f172.google.com) (209.85.214.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Mon, 11 May 2015 07:23:52 +0000 Received: by obblk2 with SMTP id lk2so93759927obb.0 for ; Mon, 11 May 2015 00:23:50 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.202.240.215 with SMTP id o206mr6667883oih.94.1431329030481; Mon, 11 May 2015 00:23:50 -0700 (PDT) Received: by 10.60.147.170 with HTTP; Mon, 11 May 2015 00:23:50 -0700 (PDT) In-Reply-To: <554D1B3C.60804@redhat.com> References: <554D1B3C.60804@redhat.com> Date: Mon, 11 May 2015 07:23:00 -0000 Message-ID: Subject: Re: [PATCH, alpha]: Remove dead (HOST_BITS_PER_WIDE_INT < 64) code From: Uros Bizjak To: Richard Henderson Cc: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary=94eb2c09204e6b64720515c942da X-SW-Source: 2015-05/txt/msg00883.txt.bz2 --94eb2c09204e6b64720515c942da Content-Type: text/plain; charset=UTF-8 Content-length: 1153 On Fri, May 8, 2015 at 10:23 PM, Richard Henderson wrote: > On 05/08/2015 09:43 AM, Uros Bizjak wrote: >> @@ -1509,8 +1509,7 @@ >> (and:DI (ashift:DI (match_operand:DI 1 "register_operand" "r") >> (match_operand:DI 2 "mul8_operand" "I")) >> (match_operand:DI 3 "immediate_operand" "i")))] >> - "HOST_BITS_PER_WIDE_INT == 64 >> - && CONST_INT_P (operands[3]) >> + "CONST_INT_P (operands[3]) > > Just noticed that we can eliminate this test if we use const_int_operand instead. > >> + "operands[2] = force_reg (DImode, GEN_INT (HOST_WIDE_INT_1 << 63));") > > I bet we're now supposed to use HOST_WIDE_INT_1U, to avoid any ubsan shift > silliness. > >> @@ -1929,7 +1925,7 @@ alpha_emit_set_const_1 (rtx target, machine_mode m >> temp = alpha_emit_set_const (subtarget, mode, new_const, i, no_output); >> if (!temp) >> { >> - new_const = (c << bits) | (((HOST_WIDE_INT) 1 << bits) - 1); >> + new_const = (c << bits) | ((HOST_WIDE_INT_1 << bits) - 1); > > Likewise. Thanks for the review! I have committed the attached patch. Uros. --94eb2c09204e6b64720515c942da Content-Type: text/plain; charset=US-ASCII; name="a.diff.txt" Content-Disposition: attachment; filename="a.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i9jkcgew0 Content-length: 17438 SW5kZXg6IGNvbmZpZy9hbHBoYS9hbHBoYS5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGNvbmZpZy9hbHBoYS9hbHBoYS5jCShyZXZpc2lvbiAyMjI5 MTMpCisrKyBjb25maWcvYWxwaGEvYWxwaGEuYwkod29ya2luZyBjb3B5KQpA QCAtMTc3MSwxMSArMTc3MSw5IEBAIGFscGhhX2VtaXRfc2V0X2NvbnN0XzEg KHJ0eCB0YXJnZXQsIG1hY2hpbmVfbW9kZSBtCiAgIHJ0eCB0ZW1wLCBpbnNu OwogCiAgIC8qIElmIHRoaXMgaXMgYSBzaWduLWV4dGVuZGVkIDMyLWJpdCBj b25zdGFudCwgd2UgY2FuIGRvIHRoaXMgaW4gYXQgbW9zdAotICAgICB0aHJl ZSBpbnNucywgc28gZG8gaXQgaWYgd2UgaGF2ZSBlbm91Z2ggaW5zbnMgbGVm dC4gIFdlIGFsd2F5cyBoYXZlCi0gICAgIGEgc2lnbi1leHRlbmRlZCAzMi1i aXQgY29uc3RhbnQgd2hlbiBjb21waWxpbmcgb24gYSBuYXJyb3cgbWFjaGlu ZS4gICovCisgICAgIHRocmVlIGluc25zLCBzbyBkbyBpdCBpZiB3ZSBoYXZl IGVub3VnaCBpbnNucyBsZWZ0LiAgKi8KIAotICBpZiAoSE9TVF9CSVRTX1BF Ul9XSURFX0lOVCAhPSA2NAotICAgICAgfHwgYyA+PiAzMSA9PSAtMSB8fCBj ID4+IDMxID09IDApCisgIGlmIChjID4+IDMxID09IC0xIHx8IGMgPj4gMzEg PT0gMCkKICAgICB7CiAgICAgICBIT1NUX1dJREVfSU5UIGxvdyA9ICgoYyAm IDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwOwogICAgICAgSE9TVF9XSURF X0lOVCB0bXAxID0gYyAtIGxvdzsKQEAgLTE5MTcsMTEgKzE5MTUsOSBAQCBh bHBoYV9lbWl0X3NldF9jb25zdF8xIChydHggdGFyZ2V0LCBtYWNoaW5lX21v ZGUgbQogICAgICAgLyogTm93IHRyeSBoaWdoLW9yZGVyIHplcm8gYml0cy4g IEhlcmUgd2UgdHJ5IHRoZSBzaGlmdGVkLWluIGJpdHMgYXMKIAkgYWxsIHpl cm8gYW5kIGFsbCBvbmVzLiAgQmUgY2FyZWZ1bCB0byBhdm9pZCBzaGlmdGlu ZyBvdXRzaWRlIHRoZQogCSBtb2RlIGFuZCB0byBhdm9pZCBzaGlmdGluZyBv dXRzaWRlIHRoZSBob3N0IHdpZGUgaW50IHNpemUuICAqLwotICAgICAgLyog T24gbmFycm93IGhvc3RzLCBkb24ndCBzaGlmdCBhIDEgaW50byB0aGUgaGln aCBiaXQsIHNpbmNlIHdlJ2xsCi0JIGNvbmZ1c2UgdGhlIHJlY3Vyc2l2ZSBj YWxsIGFuZCBzZXQgYWxsIG9mIHRoZSBoaWdoIDMyIGJpdHMuICAqLwogCiAg ICAgICBiaXRzID0gKE1JTiAoSE9TVF9CSVRTX1BFUl9XSURFX0lOVCwgR0VU X01PREVfU0laRSAobW9kZSkgKiA4KQotCSAgICAgIC0gZmxvb3JfbG9nMiAo YykgLSAxIC0gKEhPU1RfQklUU19QRVJfV0lERV9JTlQgPCA2NCkpOworCSAg ICAgIC0gZmxvb3JfbG9nMiAoYykgLSAxKTsKICAgICAgIGlmIChiaXRzID4g MCkKIAlmb3IgKDsgYml0cyA+IDA7IGJpdHMtLSkKIAkgIHsKQEAgLTE5Mjks NyArMTkyNSw3IEBAIGFscGhhX2VtaXRfc2V0X2NvbnN0XzEgKHJ0eCB0YXJn ZXQsIG1hY2hpbmVfbW9kZSBtCiAJICAgIHRlbXAgPSBhbHBoYV9lbWl0X3Nl dF9jb25zdCAoc3VidGFyZ2V0LCBtb2RlLCBuZXdfY29uc3QsIGksIG5vX291 dHB1dCk7CiAJICAgIGlmICghdGVtcCkKIAkgICAgICB7Ci0JCW5ld19jb25z dCA9IChjIDw8IGJpdHMpIHwgKCgoSE9TVF9XSURFX0lOVCkgMSA8PCBiaXRz KSAtIDEpOworCQluZXdfY29uc3QgPSAoYyA8PCBiaXRzKSB8ICgoSE9TVF9X SURFX0lOVF8xVSA8PCBiaXRzKSAtIDEpOwogCSAgICAgICAgdGVtcCA9IGFs cGhhX2VtaXRfc2V0X2NvbnN0IChzdWJ0YXJnZXQsIG1vZGUsIG5ld19jb25z dCwKIAkJCQkJICAgICBpLCBub19vdXRwdXQpOwogCSAgICAgIH0KQEAgLTE5 NTUsNyArMTk1MSw3IEBAIGFscGhhX2VtaXRfc2V0X2NvbnN0XzEgKHJ0eCB0 YXJnZXQsIG1hY2hpbmVfbW9kZSBtCiAJICAgIHRlbXAgPSBhbHBoYV9lbWl0 X3NldF9jb25zdCAoc3VidGFyZ2V0LCBtb2RlLCBuZXdfY29uc3QsIGksIG5v X291dHB1dCk7CiAJICAgIGlmICghdGVtcCkKIAkgICAgICB7Ci0JCW5ld19j b25zdCA9IChjIDw8IGJpdHMpIHwgKCgoSE9TVF9XSURFX0lOVCkgMSA8PCBi aXRzKSAtIDEpOworCQluZXdfY29uc3QgPSAoYyA8PCBiaXRzKSB8ICgoSE9T VF9XSURFX0lOVF8xVSA8PCBiaXRzKSAtIDEpOwogCSAgICAgICAgdGVtcCA9 IGFscGhhX2VtaXRfc2V0X2NvbnN0IChzdWJ0YXJnZXQsIG1vZGUsIG5ld19j b25zdCwKIAkJCQkJICAgICBpLCBub19vdXRwdXQpOwogCSAgICAgIH0KQEAg LTE5NjksNyArMTk2NSw2IEBAIGFscGhhX2VtaXRfc2V0X2NvbnN0XzEgKHJ0 eCB0YXJnZXQsIG1hY2hpbmVfbW9kZSBtCiAJICB9CiAgICAgfQogCi0jaWYg SE9TVF9CSVRTX1BFUl9XSURFX0lOVCA9PSA2NAogICAvKiBGaW5hbGx5LCBz ZWUgaWYgY2FuIGxvYWQgYSB2YWx1ZSBpbnRvIHRoZSB0YXJnZXQgdGhhdCBp cyB0aGUgc2FtZSBhcyB0aGUKICAgICAgY29uc3RhbnQgZXhjZXB0IHRoYXQg YWxsIGJ5dGVzIHRoYXQgYXJlIDAgYXJlIGNoYW5nZWQgdG8gYmUgMHhmZi4g IElmIHdlCiAgICAgIGNhbiwgdGhlbiB3ZSBjYW4gZG8gYSBaQVBOT1QgdG8g b2J0YWluIHRoZSBkZXNpcmVkIGNvbnN0YW50LiAgKi8KQEAgLTE5OTYsNyAr MTk5MSw2IEBAIGFscGhhX2VtaXRfc2V0X2NvbnN0XzEgKHJ0eCB0YXJnZXQs IG1hY2hpbmVfbW9kZSBtCiAJCQkgICAgICAgdGFyZ2V0LCAwLCBPUFRBQl9X SURFTik7CiAJfQogICAgIH0KLSNlbmRpZgogCiAgIHJldHVybiAwOwogfQpA QCAtMjA3Nyw3ICsyMDcxLDcgQEAgYWxwaGFfZW1pdF9zZXRfbG9uZ19jb25z dCAocnR4IHRhcmdldCwgSE9TVF9XSURFX0kKICAgSE9TVF9XSURFX0lOVCBk MSwgZDIsIGQzLCBkNDsKIAogICAvKiBEZWNvbXBvc2UgdGhlIGVudGlyZSB3 b3JkICovCi0jaWYgSE9TVF9CSVRTX1BFUl9XSURFX0lOVCA+PSA2NAorCiAg IGdjY19hc3NlcnQgKGMyID09IC0oYzEgPCAwKSk7CiAgIGQxID0gKChjMSAm IDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwOwogICBjMSAtPSBkMTsKQEAg LTIwODcsMTcgKzIwODEsNiBAQCBhbHBoYV9lbWl0X3NldF9sb25nX2NvbnN0 IChydHggdGFyZ2V0LCBIT1NUX1dJREVfSQogICBjMSAtPSBkMzsKICAgZDQg PSAoKGMxICYgMHhmZmZmZmZmZikgXiAweDgwMDAwMDAwKSAtIDB4ODAwMDAw MDA7CiAgIGdjY19hc3NlcnQgKGMxID09IGQ0KTsKLSNlbHNlCi0gIGQxID0g KChjMSAmIDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwOwotICBjMSAtPSBk MTsKLSAgZDIgPSAoKGMxICYgMHhmZmZmZmZmZikgXiAweDgwMDAwMDAwKSAt IDB4ODAwMDAwMDA7Ci0gIGdjY19hc3NlcnQgKGMxID09IGQyKTsKLSAgYzIg Kz0gKGQyIDwgMCk7Ci0gIGQzID0gKChjMiAmIDB4ZmZmZikgXiAweDgwMDAp IC0gMHg4MDAwOwotICBjMiAtPSBkMzsKLSAgZDQgPSAoKGMyICYgMHhmZmZm ZmZmZikgXiAweDgwMDAwMDAwKSAtIDB4ODAwMDAwMDA7Ci0gIGdjY19hc3Nl cnQgKGMyID09IGQ0KTsKLSNlbmRpZgogCiAgIC8qIENvbnN0cnVjdCB0aGUg aGlnaCB3b3JkICovCiAgIGlmIChkNCkKQEAgLTIxMzgsMTYgKzIxMjEsMTEg QEAgYWxwaGFfZXh0cmFjdF9pbnRlZ2VyIChydHggeCwgSE9TVF9XSURFX0lO VCAqcDAsIEgKICAgICAgIGkwID0gSU5UVkFMICh4KTsKICAgICAgIGkxID0g LShpMCA8IDApOwogICAgIH0KLSAgZWxzZSBpZiAoSE9TVF9CSVRTX1BFUl9X SURFX0lOVCA+PSA2NCkKKyAgZWxzZQogICAgIHsKICAgICAgIGkwID0gQ09O U1RfRE9VQkxFX0xPVyAoeCk7CiAgICAgICBpMSA9IC0oaTAgPCAwKTsKICAg ICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBpMCA9IENPTlNUX0RPVUJMRV9M T1cgKHgpOwotICAgICAgaTEgPSBDT05TVF9ET1VCTEVfSElHSCAoeCk7Ci0g ICAgfQogCiAgICpwMCA9IGkwOwogICAqcDEgPSBpMTsKQEAgLTIyMDYsOSAr MjE4NCw3IEBAIGFscGhhX2xlZ2l0aW1hdGVfY29uc3RhbnRfcCAobWFjaGlu ZV9tb2RlIG1vZGUsIHJ0CiAgICAgICBpZiAoVEFSR0VUX0JVSUxEX0NPTlNU QU5UUykKIAlyZXR1cm4gdHJ1ZTsKICAgICAgIGFscGhhX2V4dHJhY3RfaW50 ZWdlciAoeCwgJmkwLCAmaTEpOwotICAgICAgaWYgKEhPU1RfQklUU19QRVJf V0lERV9JTlQgPj0gNjQgfHwgaTEgPT0gKC1pMCA8IDApKQotICAgICAgICBy ZXR1cm4gYWxwaGFfZW1pdF9zZXRfY29uc3RfMSAoeCwgbW9kZSwgaTAsIDMs IHRydWUpICE9IE5VTEw7Ci0gICAgICByZXR1cm4gZmFsc2U7CisgICAgICBy ZXR1cm4gYWxwaGFfZW1pdF9zZXRfY29uc3RfMSAoeCwgbW9kZSwgaTAsIDMs IHRydWUpICE9IE5VTEw7CiAKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJu IGZhbHNlOwpAQCAtMjIyNiw4ICsyMjAyLDcgQEAgYWxwaGFfc3BsaXRfY29u c3RfbW92IChtYWNoaW5lX21vZGUgbW9kZSwgcnR4ICpvcGUKIAogICBhbHBo YV9leHRyYWN0X2ludGVnZXIgKG9wZXJhbmRzWzFdLCAmaTAsICZpMSk7CiAK LSAgaWYgKEhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0gNjQgfHwgaTEgPT0g LShpMCA8IDApKQotICAgIHRlbXAgPSBhbHBoYV9lbWl0X3NldF9jb25zdCAo b3BlcmFuZHNbMF0sIG1vZGUsIGkwLCAzLCBmYWxzZSk7CisgIHRlbXAgPSBh bHBoYV9lbWl0X3NldF9jb25zdCAob3BlcmFuZHNbMF0sIG1vZGUsIGkwLCAz LCBmYWxzZSk7CiAKICAgaWYgKCF0ZW1wICYmIFRBUkdFVF9CVUlMRF9DT05T VEFOVFMpCiAgICAgdGVtcCA9IGFscGhhX2VtaXRfc2V0X2xvbmdfY29uc3Qg KG9wZXJhbmRzWzBdLCBpMCwgaTEpOwpAQCAtNDA5OSw3ICs0MDc0LDYgQEAg YWxwaGFfZXhwYW5kX2Jsb2NrX2NsZWFyIChydHggb3BlcmFuZHNbXSkKIAog ICBpZiAoYWxpZ25vZnMgPiAwKQogICAgIHsKLSNpZiBIT1NUX0JJVFNfUEVS X1dJREVfSU5UID49IDY0CiAgICAgICAvKiBHaXZlbiB0aGF0IGFsaWdub2Zz IGlzIGJvdW5kZWQgYnkgYWxpZ24sIHRoZSBvbmx5IHRpbWUgQldYIGNvdWxk CiAJIGdlbmVyYXRlIHRocmVlIHN0b3JlcyBpcyBmb3IgYSA3IGJ5dGUgZmls bC4gIFByZWZlciB0d28gaW5kaXZpZHVhbAogCSBzdG9yZXMgb3ZlciBhIGxv YWQvbWFzay9zdG9yZSBzZXF1ZW5jZS4gICovCkBAIC00MTM0LDcgKzQxMDgs NiBAQCBhbHBoYV9leHBhbmRfYmxvY2tfY2xlYXIgKHJ0eCBvcGVyYW5kc1td KQogCiAJICBlbWl0X21vdmVfaW5zbiAobWVtLCB0bXApOwogCX0KLSNlbmRp ZgogCiAgICAgICBpZiAoVEFSR0VUX0JXWCAmJiAoYWxpZ25vZnMgJiAxKSAm JiBieXRlcyA+PSAxKQogCXsKQEAgLTQyNDYsNyArNDIxOSw2IEBAIGFscGhh X2V4cGFuZF9ibG9ja19jbGVhciAocnR4IG9wZXJhbmRzW10pCiAKICAgLyog TmV4dCBjbGVhbiB1cCBhbnkgdHJhaWxpbmcgcGllY2VzLiAgKi8KIAotI2lm IEhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0gNjQKICAgLyogQ291bnQgdGhl IG51bWJlciBvZiBiaXRzIGluIEJZVEVTIGZvciB3aGljaCBhbGlnbmVkIHN0 b3JlcyBjb3VsZAogICAgICBiZSBlbWl0dGVkLiAgKi8KICAgd29yZHMgPSAw OwpAQCAtNDI5MSw3ICs0MjYzLDYgQEAgYWxwaGFfZXhwYW5kX2Jsb2NrX2Ns ZWFyIChydHggb3BlcmFuZHNbXSkKIAkgIHJldHVybiAxOwogCX0KICAgICB9 Ci0jZW5kaWYKIAogICBpZiAoIVRBUkdFVF9CV1ggJiYgYnl0ZXMgPj0gNCkK ICAgICB7CkBAIC00MzM2LDQzICs0MzA3LDE2IEBAIGFscGhhX2V4cGFuZF96 YXBfbWFzayAoSE9TVF9XSURFX0lOVCB2YWx1ZSkKIHsKICAgcnR4IHJlc3Vs dDsKICAgaW50IGk7CisgIEhPU1RfV0lERV9JTlQgbWFzayA9IDA7CiAKLSAg aWYgKEhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0gNjQpCisgIGZvciAoaSA9 IDc7IGkgPj0gMDsgLS1pKQogICAgIHsKLSAgICAgIEhPU1RfV0lERV9JTlQg bWFzayA9IDA7Ci0KLSAgICAgIGZvciAoaSA9IDc7IGkgPj0gMDsgLS1pKQot CXsKLQkgIG1hc2sgPDw9IDg7Ci0JICBpZiAoISgodmFsdWUgPj4gaSkgJiAx KSkKLQkgICAgbWFzayB8PSAweGZmOwotCX0KLQotICAgICAgcmVzdWx0ID0g Z2VuX2ludF9tb2RlIChtYXNrLCBESW1vZGUpOworICAgICAgbWFzayA8PD0g ODsKKyAgICAgIGlmICghKCh2YWx1ZSA+PiBpKSAmIDEpKQorCW1hc2sgfD0g MHhmZjsKICAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBIT1NUX1dJREVf SU5UIG1hc2tfbG8gPSAwLCBtYXNrX2hpID0gMDsKIAotICAgICAgZ2NjX2Fz c2VydCAoSE9TVF9CSVRTX1BFUl9XSURFX0lOVCA9PSAzMik7Ci0gICAgICAK LSAgICAgIGZvciAoaSA9IDc7IGkgPj0gNDsgLS1pKQotCXsKLQkgIG1hc2tf aGkgPDw9IDg7Ci0JICBpZiAoISgodmFsdWUgPj4gaSkgJiAxKSkKLQkgICAg bWFza19oaSB8PSAweGZmOwotCX0KLQotICAgICAgZm9yIChpID0gMzsgaSA+ PSAwOyAtLWkpCi0JewotCSAgbWFza19sbyA8PD0gODsKLQkgIGlmICghKCh2 YWx1ZSA+PiBpKSAmIDEpKQotCSAgICBtYXNrX2xvIHw9IDB4ZmY7Ci0JfQot Ci0gICAgICByZXN1bHQgPSBpbW1lZF9kb3VibGVfY29uc3QgKG1hc2tfbG8s IG1hc2tfaGksIERJbW9kZSk7Ci0gICAgfQotCisgIHJlc3VsdCA9IGdlbl9p bnRfbW9kZSAobWFzaywgREltb2RlKTsKICAgcmV0dXJuIHJlc3VsdDsKIH0K IApAQCAtNTI4OCw3ICs1MjMyLDcgQEAgcHJpbnRfb3BlcmFuZCAoRklMRSAq ZmlsZSwgcnR4IHgsIGludCBjb2RlKQogICAgICAgaWYgKCFDT05TVF9JTlRf UCAoeCkpCiAJb3V0cHV0X29wZXJhbmRfbG9zc2FnZSAoImludmFsaWQgJSVQ IHZhbHVlIik7CiAKLSAgICAgIGZwcmludGYgKGZpbGUsIEhPU1RfV0lERV9J TlRfUFJJTlRfREVDLCAoSE9TVF9XSURFX0lOVCkgMSA8PCBJTlRWQUwgKHgp KTsKKyAgICAgIGZwcmludGYgKGZpbGUsIEhPU1RfV0lERV9JTlRfUFJJTlRf REVDLCBIT1NUX1dJREVfSU5UXzEgPDwgSU5UVkFMICh4KSk7CiAgICAgICBi cmVhazsKIAogICAgIGNhc2UgJ2gnOgpAQCAtNTM4NSwxNCArNTMyOSw3IEBA IHByaW50X29wZXJhbmQgKEZJTEUgKmZpbGUsIHJ0eCB4LCBpbnQgY29kZSkK IAkgICAgICBicmVhazsKIAkgICAgfQogCX0KLSAgICAgIGVsc2UgaWYgKEhP U1RfQklUU19QRVJfV0lERV9JTlQgPT0gMzIKLQkgICAgICAgJiYgR0VUX0NP REUgKHgpID09IENPTlNUX0RPVUJMRQotCSAgICAgICAmJiBDT05TVF9ET1VC TEVfTE9XICh4KSA9PSAweGZmZmZmZmZmCi0JICAgICAgICYmIENPTlNUX0RP VUJMRV9ISUdIICh4KSA9PSAwKQotCXsKLQkgIGZwdXRjICgnbCcsIGZpbGUp OwotCSAgYnJlYWs7Ci0JfQorCiAgICAgICBvdXRwdXRfb3BlcmFuZF9sb3Nz YWdlICgiaW52YWxpZCAlJVUgdmFsdWUiKTsKICAgICAgIGJyZWFrOwogCkBA IC02Nzg4LDEzICs2NzI1LDYgQEAgYWxwaGFfZXhwYW5kX2J1aWx0aW4gKHRy ZWUgZXhwLCBydHggdGFyZ2V0LAogICAgIHJldHVybiBjb25zdDBfcnR4Owog fQogCi0KLS8qIFNldmVyYWwgYml0cyBiZWxvdyBhc3N1bWUgSFdJID49IDY0 IGJpdHMuICBUaGlzIHNob3VsZCBiZSBlbmZvcmNlZAotICAgYnkgY29uZmln LmdjYy4gICovCi0jaWYgSE9TVF9CSVRTX1BFUl9XSURFX0lOVCA8IDY0Ci0j IGVycm9yICJIT1NUX1dJREVfSU5UIHRvbyBzbWFsbCIKLSNlbmRpZgotCiAv KiBGb2xkIHRoZSBidWlsdGluIGZvciB0aGUgQ01QQkdFIGluc3RydWN0aW9u LiAgVGhpcyBpcyBhIHZlY3RvciBjb21wYXJpc29uCiAgICB3aXRoIGFuIDgt Yml0IG91dHB1dCB2ZWN0b3IuICBPUElOVCBjb250YWlucyB0aGUgaW50ZWdl ciBvcGVyYW5kczsgYml0IE4KICAgIG9mIE9QX0NPTlNUIGlzIHNldCBpZiBP UElOVFtOXSBpcyB2YWxpZC4gICovCkluZGV4OiBjb25maWcvYWxwaGEvYWxw aGEubWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29uZmlnL2FscGhh L2FscGhhLm1kCShyZXZpc2lvbiAyMjI5MTMpCisrKyBjb25maWcvYWxwaGEv YWxwaGEubWQJKHdvcmtpbmcgY29weSkKQEAgLTk1MSw3ICs5NTEsNyBAQAog ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5k IikKIAkoYW5kOkRJIChtYXRjaF9vcGVyYW5kOkRJIDEgInJlZ2lzdGVyX29w ZXJhbmQiKQogCQkobWF0Y2hfb3BlcmFuZDpESSAyICJjb25zdF9pbnRfb3Bl cmFuZCIpKSldCi0gICJIT1NUX0JJVFNfUEVSX1dJREVfSU5UID09IDY0ICYm ICEgYW5kX29wZXJhbmQgKG9wZXJhbmRzWzJdLCBESW1vZGUpIgorICAiISBh bmRfb3BlcmFuZCAob3BlcmFuZHNbMl0sIERJbW9kZSkiCiAgIFsoc2V0ICht YXRjaF9kdXAgMCkgKGFuZDpESSAobWF0Y2hfZHVwIDEpIChtYXRjaF9kdXAg MykpKQogICAgKHNldCAobWF0Y2hfZHVwIDApIChhbmQ6REkgKG1hdGNoX2R1 cCAwKSAobWF0Y2hfZHVwIDQpKSldCiB7CkBAIC0xNTA4LDE3ICsxNTA4LDE0 IEBACiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29w ZXJhbmQiICI9ciIpCiAJKGFuZDpESSAoYXNoaWZ0OkRJIChtYXRjaF9vcGVy YW5kOkRJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJyIikKIAkJICAgCSAgICht YXRjaF9vcGVyYW5kOkRJIDIgIm11bDhfb3BlcmFuZCIgIkkiKSkKLQkJKG1h dGNoX29wZXJhbmQ6REkgMyAiaW1tZWRpYXRlX29wZXJhbmQiICJpIikpKV0K LSAgIkhPU1RfQklUU19QRVJfV0lERV9JTlQgPT0gNjQKLSAgICYmIENPTlNU X0lOVF9QIChvcGVyYW5kc1szXSkKLSAgICYmICgoKHVuc2lnbmVkIEhPU1Rf V0lERV9JTlQpIDB4ZmYgPDwgSU5UVkFMIChvcGVyYW5kc1syXSkKKwkJKG1h dGNoX29wZXJhbmQ6REkgMyAiY29uc3RfaW50X29wZXJhbmQiICJpIikpKV0K KyAgIigodW5zaWduZWQgSE9TVF9XSURFX0lOVCkgMHhmZiA8PCBJTlRWQUwg KG9wZXJhbmRzWzJdKQorICAgID09ICh1bnNpZ25lZCBIT1NUX1dJREVfSU5U KSBJTlRWQUwgKG9wZXJhbmRzWzNdKSkKKyAgICB8fCAoKHVuc2lnbmVkIEhP U1RfV0lERV9JTlQpIDB4ZmZmZiA8PCBJTlRWQUwgKG9wZXJhbmRzWzJdKQog ICAgICAgICA9PSAodW5zaWduZWQgSE9TVF9XSURFX0lOVCkgSU5UVkFMIChv cGVyYW5kc1szXSkpCi0gICAgICAgfHwgKCh1bnNpZ25lZCBIT1NUX1dJREVf SU5UKSAweGZmZmYgPDwgSU5UVkFMIChvcGVyYW5kc1syXSkKLSAgICAgICAg PT0gKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpIElOVFZBTCAob3BlcmFuZHNb M10pKQotICAgICAgIHx8ICgodW5zaWduZWQgSE9TVF9XSURFX0lOVCkgMHhm ZmZmZmZmZiA8PCBJTlRWQUwgKG9wZXJhbmRzWzJdKQotICAgICAgICA9PSAo dW5zaWduZWQgSE9TVF9XSURFX0lOVCkgSU5UVkFMIChvcGVyYW5kc1szXSkp KSIKKyAgICB8fCAoKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpIDB4ZmZmZmZm ZmYgPDwgSU5UVkFMIChvcGVyYW5kc1syXSkKKyAgICAgICAgPT0gKHVuc2ln bmVkIEhPU1RfV0lERV9JTlQpIElOVFZBTCAob3BlcmFuZHNbM10pKSIKIHsK LSNpZiBIT1NUX0JJVFNfUEVSX1dJREVfSU5UID09IDY0CiAgIGlmICgodW5z aWduZWQgSE9TVF9XSURFX0lOVCkgMHhmZiA8PCBJTlRWQUwgKG9wZXJhbmRz WzJdKQogICAgICAgPT0gKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpIElOVFZB TCAob3BlcmFuZHNbM10pKQogICAgIHJldHVybiAiaW5zYmwgJTEsJXMyLCUw IjsKQEAgLTE1MjgsNyArMTUyNSw3IEBACiAgIGlmICgodW5zaWduZWQgSE9T VF9XSURFX0lOVCkgMHhmZmZmZmZmZiA8PCBJTlRWQUwgKG9wZXJhbmRzWzJd KQogICAgICAgPT0gKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpIElOVFZBTCAo b3BlcmFuZHNbM10pKQogICAgIHJldHVybiAiaW5zbGwgJTEsJXMyLCUwIjsK LSNlbmRpZgorCiAgIGdjY191bnJlYWNoYWJsZSAoKTsKIH0KICAgWyhzZXRf YXR0ciAidHlwZSIgInNoaWZ0IildKQpAQCAtMTYxOSwxMyArMTYxNiw3IEBA CiAJCSAgIChhYnM6VEYgKG1hdGNoX29wZXJhbmQ6VEYgMSAicmVnX29yXzBf b3BlcmFuZCIpKSkKIAkgICAgICAodXNlIChtYXRjaF9kdXAgMikpXSldCiAg ICJUQVJHRVRfSEFTX1hGTE9BVElOR19MSUJTIgotewotI2lmIEhPU1RfQklU U19QRVJfV0lERV9JTlQgPj0gNjQKLSAgb3BlcmFuZHNbMl0gPSBmb3JjZV9y ZWcgKERJbW9kZSwgR0VOX0lOVCAoKEhPU1RfV0lERV9JTlQpIDEgPDwgNjMp KTsKLSNlbHNlCi0gIG9wZXJhbmRzWzJdID0gZm9yY2VfcmVnIChESW1vZGUs IGltbWVkX2RvdWJsZV9jb25zdCAoMCwgMHg4MDAwMDAwMCwgREltb2RlKSk7 Ci0jZW5kaWYKLX0pCisgICJvcGVyYW5kc1syXSA9IGZvcmNlX3JlZyAoRElt b2RlLCBHRU5fSU5UIChIT1NUX1dJREVfSU5UXzFVIDw8IDYzKSk7IikKIAog KGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKmFic3RmX2ludGVybmFsIgogICBb KHNldCAobWF0Y2hfb3BlcmFuZDpURiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXIiKQpAQCAtMTY0OSwxMyArMTY0MCw3IEBACiAJCSAgIChuZWc6VEYgKG1h dGNoX29wZXJhbmQ6VEYgMSAicmVnX29yXzBfb3BlcmFuZCIpKSkKIAkgICAg ICAodXNlIChtYXRjaF9kdXAgMikpXSldCiAgICJUQVJHRVRfSEFTX1hGTE9B VElOR19MSUJTIgotewotI2lmIEhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0g NjQKLSAgb3BlcmFuZHNbMl0gPSBmb3JjZV9yZWcgKERJbW9kZSwgR0VOX0lO VCAoKEhPU1RfV0lERV9JTlQpIDEgPDwgNjMpKTsKLSNlbHNlCi0gIG9wZXJh bmRzWzJdID0gZm9yY2VfcmVnIChESW1vZGUsIGltbWVkX2RvdWJsZV9jb25z dCAoMCwgMHg4MDAwMDAwMCwgREltb2RlKSk7Ci0jZW5kaWYKLX0pCisgICJv cGVyYW5kc1syXSA9IGZvcmNlX3JlZyAoREltb2RlLCBHRU5fSU5UIChIT1NU X1dJREVfSU5UXzFVIDw8IDYzKSk7IikKIAogKGRlZmluZV9pbnNuX2FuZF9z cGxpdCAiKm5lZ3RmX2ludGVybmFsIgogICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpURiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQpAQCAtNTQ0MCw3ICs1 NDI1LDcgQEAKICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgInJlZ19vcl84Yml0 X29wZXJhbmQiKV0KICAgIiIKIHsKLSAgcnR4IG1hc2sgPSBpbW1lZF9kb3Vi bGVfY29uc3QgKDB4ZmZmZmZmZmYsIDAsIERJbW9kZSk7CisgIHJ0eCBtYXNr ID0gZ2VuX2ludF9tb2RlICgweGZmZmZmZmZmLCBESW1vZGUpOwogICBlbWl0 X2luc24gKGdlbl9tc2t4bCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBt YXNrLCBvcGVyYW5kc1syXSkpOwogICBET05FOwogfSkKQEAgLTU1NDIsMTYg KzU1MjcsOCBAQAogICBbKGNvbnN0X2ludCAwKV0KIHsKICAgcnR4IG1hc2sg PSBhbHBoYV9leHBhbmRfemFwX21hc2sgKElOVFZBTCAob3BlcmFuZHNbMl0p KTsKLSAgaWYgKEhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0gNjQgfHwgQ09O U1RfSU5UX1AgKG1hc2spKQotICAgIG9wZXJhbmRzWzFdID0gZ2VuX2ludF9t b2RlIChJTlRWQUwgKG9wZXJhbmRzWzFdKSAmIElOVFZBTCAobWFzayksIERJ bW9kZSk7Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBIT1NUX1dJREVfSU5UIGNf bG8gPSBJTlRWQUwgKG9wZXJhbmRzWzFdKTsKLSAgICAgIEhPU1RfV0lERV9J TlQgY19oaSA9IChjX2xvIDwgMCA/IC0xIDogMCk7Ci0gICAgICBvcGVyYW5k c1sxXSA9IGltbWVkX2RvdWJsZV9jb25zdCAoY19sbyAmIENPTlNUX0RPVUJM RV9MT1cgKG1hc2spLAotCQkJCQljX2hpICYgQ09OU1RfRE9VQkxFX0hJR0gg KG1hc2spLAotCQkJCQlESW1vZGUpOwotICAgIH0KKworICBvcGVyYW5kc1sx XSA9IGdlbl9pbnRfbW9kZSAoSU5UVkFMIChvcGVyYW5kc1sxXSkgJiBJTlRW QUwgKG1hc2spLCBESW1vZGUpOwogICBlbWl0X21vdmVfaW5zbiAob3BlcmFu ZHNbMF0sIG9wZXJhbmRzWzFdKTsKICAgRE9ORTsKIH0pCkluZGV4OiBjb25m aWcvYWxwaGEvcHJlZGljYXRlcy5tZAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBjb25maWcvYWxwaGEvcHJlZGljYXRlcy5tZAkocmV2aXNpb24gMjIy OTEzKQorKysgY29uZmlnL2FscGhhL3ByZWRpY2F0ZXMubWQJKHdvcmtpbmcg Y29weSkKQEAgLTExMCwyNiArMTEwLDE5IEBACiA7OyBSZXR1cm4gMSBpZiBP UCBpcyBhIGNvbnN0YW50IHRoYXQgaXMgYSBtYXNrIG9mIG9uZXMgb2Ygd2lk dGggb2YgYW4KIDs7IGludGVncmFsIG1hY2hpbmUgbW9kZSBub3QgbGFyZ2Vy IHRoYW4gREltb2RlLgogKGRlZmluZV9wcmVkaWNhdGUgIm1vZGVfbWFza19v cGVyYW5kIgotICAobWF0Y2hfY29kZSAiY29uc3RfaW50LGNvbnN0X2RvdWJs ZSIpCisgIChtYXRjaF9jb2RlICJjb25zdF9pbnQiKQogewotICBpZiAoQ09O U1RfSU5UX1AgKG9wKSkKLSAgICB7Ci0gICAgICBIT1NUX1dJREVfSU5UIHZh bHVlID0gSU5UVkFMIChvcCk7CisgIEhPU1RfV0lERV9JTlQgdmFsdWUgPSBJ TlRWQUwgKG9wKTsKIAotICAgICAgaWYgKHZhbHVlID09IDB4ZmYpCi0JcmV0 dXJuIDE7Ci0gICAgICBpZiAodmFsdWUgPT0gMHhmZmZmKQotCXJldHVybiAx OwotICAgICAgaWYgKHZhbHVlID09IDB4ZmZmZmZmZmYpCi0JcmV0dXJuIDE7 Ci0gICAgICBpZiAodmFsdWUgPT0gLTEpCi0JcmV0dXJuIDE7Ci0gICAgfQot ICBlbHNlIGlmIChIT1NUX0JJVFNfUEVSX1dJREVfSU5UID09IDMyICYmIEdF VF9DT0RFIChvcCkgPT0gQ09OU1RfRE9VQkxFKQotICAgIHsKLSAgICAgIGlm IChDT05TVF9ET1VCTEVfTE9XIChvcCkgPT0gMHhmZmZmZmZmZiAmJiBDT05T VF9ET1VCTEVfSElHSCAob3ApID09IDApCi0JcmV0dXJuIDE7Ci0gICAgfQor ICBpZiAodmFsdWUgPT0gMHhmZikKKyAgICByZXR1cm4gMTsKKyAgaWYgKHZh bHVlID09IDB4ZmZmZikKKyAgICByZXR1cm4gMTsKKyAgaWYgKHZhbHVlID09 IDB4ZmZmZmZmZmYpCisgICAgcmV0dXJuIDE7CisgIGlmICh2YWx1ZSA9PSAt MSkKKyAgICByZXR1cm4gMTsKKwogICByZXR1cm4gMDsKIH0pCiAK --94eb2c09204e6b64720515c942da--