From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 617C03858C83 for ; Wed, 19 Oct 2022 18:26:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 617C03858C83 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666203972; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=WDUKJCDI++I11TNKyuNopW8S+S87hrPH4UeO2X6RhWA=; b=HdGxzU0IuitWketgiLlQumtzjVM89VM+ZI37aOnT9S08eaQZD33ksqZv6yOSK9OAmb9jLl GTjFikyB59jvoj3erhGRnj80HFidTauVxyLQgrry+dx1EepowzU39n+9zZOEBvnJecq2Ky bc9eWJfz/gPRZTlBc/sUjAWCvkDkR/k= Received: from mail-il1-f199.google.com (mail-il1-f199.google.com [209.85.166.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-201-c8zLchl1OwKa4noRr1JhXA-1; Wed, 19 Oct 2022 14:26:03 -0400 X-MC-Unique: c8zLchl1OwKa4noRr1JhXA-1 Received: by mail-il1-f199.google.com with SMTP id a17-20020a921a11000000b002fadf952565so17199293ila.0 for ; Wed, 19 Oct 2022 11:26:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=eA9p7VMP0C6j7cgaTDRFfgQP57+QOj51m02yUt5NFJE=; b=0VhizRAnwymzVmWd2Is6Zu3hSJTNHyqdPH+8WFe1tGzQwynH8TdTo58kcnMvGzzuAS Fb6D2dQ/5hSSKZN5H9vWTLuk2kdwwqb3lvZZu1Huait34uf6PK3eQwxpKaHrKFN0cMYB 44Pm/ePOuFAwcfdrSNb+owVXXTwrPDxHhReUi0nH4ipgdV9bOwRpMQVUiAw6dEuukgWS obtwz/BylWvzjrXAQmccmh0V6oDmxDCyExSU94BR/UlBUBlvyLKluZdWjRgW1JZ1z8Ll 3Jpb3ppXZjBsSLrq8EjIOb1cxV8yEPoUFQecD46ZzOAXfKcE2wApYhGd7J/1iITdKZsi XKMg== X-Gm-Message-State: ACrzQf0etAM3FnfiUDSURHTkKzh+Sc+D7iyGoSKal6poYNu/IY3AMCAa 0WRP9JE41LvHddFR4dXfNn7z+k7nEm0Ir3TUaHggoWy/zSyZQfAO64I+8MdKvLC2Ly4sZFCdMNO ScQj5/Fpk9cule295FQ== X-Received: by 2002:a05:6e02:17cb:b0:2fb:53a7:93f7 with SMTP id z11-20020a056e0217cb00b002fb53a793f7mr6322510ilu.265.1666203962300; Wed, 19 Oct 2022 11:26:02 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5Q/rBHT70ntER3zWjpHHk7uaxqefHah+5FOKoc2GKUXJFK6LIjyuMB864M0ebvcruLBvWsSQ== X-Received: by 2002:a05:6e02:17cb:b0:2fb:53a7:93f7 with SMTP id z11-20020a056e0217cb00b002fb53a793f7mr6322490ilu.265.1666203962002; Wed, 19 Oct 2022 11:26:02 -0700 (PDT) Received: from ?IPV6:2607:fea8:a263:f600::3c4d? ([2607:fea8:a263:f600::3c4d]) by smtp.gmail.com with ESMTPSA id e73-20020a02864f000000b0035678e2e175sm2332361jai.50.2022.10.19.11.26.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Oct 2022 11:26:01 -0700 (PDT) Message-ID: <332ba657-c7ac-72d4-b8dc-fccd321aa60e@redhat.com> Date: Wed, 19 Oct 2022 14:25:59 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Subject: Re: [PATCH] middle-end, v4: IFN_ASSUME support [PR106654] To: Jakub Jelinek , Jan Hubicka , Richard Biener , gcc-patches@gcc.gnu.org References: <479fa663-fb3e-a90d-ae7a-0fdd5acbfa00@redhat.com> <16da3b46-f061-076a-19b5-c482f45477b3@redhat.com> <70311a20-1a94-21a1-e897-37289c9e0f0c@redhat.com> From: Andrew MacLeod In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------VYHoMHLXxg90iPoiLfeB0WnZ" Content-Language: en-US X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00,BODY_8BITS,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP 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. --------------VYHoMHLXxg90iPoiLfeB0WnZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 10/19/22 13:41, Jakub Jelinek wrote: > On Wed, Oct 19, 2022 at 07:39:05PM +0200, Jakub Jelinek via Gcc-patches wrote: >> On Wed, Oct 19, 2022 at 12:55:12PM -0400, Andrew MacLeod via Gcc-patches wrote: >>>> Not sure I understand this part. op is whatever we pass as the ith >>>> argument to IFN_ASSUME. I'd expect that at this point one needs to >>>> remap that to the (i-1)th PARM_DECL of assume_id (so e.g. when you >>>> have the above loop you could as well start with DECL_ARGUMENTS and move >>>> that to DECL_CHAIN at the end of every iteration. And then >>>> query ssa_default_def (DECL_STRUCT_FUNCTION (assume_id), parm) >>>> in each case and get global range of what that returns. >>> OK, this is the bit of code I dont know how to write :-) >>> >>> yes, op is the name of the value within this current function, and yes, that >>> needs to be mapped to the argument decl in the assume function.   Then we >>> need to query what range was given to that name during the assume pass. >>> when that is returned, the add_range (op, range) will inject it as a side >>> effect. >>> >>> Can you write that loop? >> I meant something like (untested code): >> && gimple_call_internal_fn (s) == IFN_ASSUME) >> { >> tree assume_id = gimple_call_arg (s, 0); >> - for (unsigned i = 1; i < gimple_call_num_args (s); i++) >> + tree parm = DECL_ARGUMENTS (assume_id); >> + struct function *fun = DECL_STRUCT_FUNCTION (assume_id); >> + for (unsigned i = 1; >> + i < gimple_call_num_args (s) && parm; >> + i++, parm = DECL_CHAIN (parm)) >> { >> tree op = gimple_call_arg (s, i); >> tree type = TREE_TYPE (op); >> + tree arg = ssa_default_def (fun, parm); >> + if (arg == NULL_TREE) >> + continue; >> if (gimple_range_ssa_p (op) && Value_Range::supports_type_p (type)) >> { >> Value_Range assume_range (type); >> and querying SSA_NAME_RANGE_INFO of arg rather than op. Thanks, I had actually come to most of those conclusions already, except for the DECL_STRUCT_FUNCTION bit.. I was stuck on that :-) So the SSA_NAMEs for default_defs are never disposed of?  so I can query them even though they are not in the current function decl?  huh. I did not know that. OK, attached is the latest set of patches.  not bootstrapped or anything, but very interesting. from.assumption  pass: ;; Function _Z3bari._assume.0 (_Z3bari._assume.0, funcdef_no=5, decl_uid=2184, cgraph_uid=7, symbol_order=7) Assumptions : -------------- x_1(D) -> [irange] int [42, 42] NONZERO 0x2a __attribute__((no_icf, noclone, noinline, noipa)) bool _Z3bari._assume.0 (int x) {   bool _2; ;;   basic block 2, loop depth 0 ;;    pred:       ENTRY   _2 = x_1(D) == 42;   return _2; ;;    succ:       EXIT } and in the VRP2 pass, I see: _Z3bari._assume.0 assume inferred range of x_1(D) (param x) = [irange] int [42, 42] NONZERO 0x2a int bar (int x) {   [local count: 1073741824]:   .ASSUME (_Z3bari._assume.0, x_1(D));   return 42; } Huh.  lookit that..... Anyway, let me clean this up a bit more, but so far so good. I'll try bootstrapping and  such Andrew --------------VYHoMHLXxg90iPoiLfeB0WnZ Content-Type: text/x-patch; charset=UTF-8; name="0001-Infer-support.patch" Content-Disposition: attachment; filename="0001-Infer-support.patch" Content-Transfer-Encoding: base64 RnJvbSA2MmNjNjNjYThkNWNjZTM1OTNjZGI0YjM1ZTVmZTk2YjBlY2M3N2E4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogVHVlLCAxOCBPY3QgMjAyMiAxNjoyOTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMS8z XSBJbmZlciBzdXBwb3J0CgotLS0KIGdjYy9naW1wbGUtcmFuZ2UtaW5mZXIuY2MgfCA0MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0MCBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS1pbmZlci5jYyBiL2dj Yy9naW1wbGUtcmFuZ2UtaW5mZXIuY2MKaW5kZXggZjBkNjZkMDQ3YTYuLjNlMzc2NzQwNzk2IDEw MDY0NAotLS0gYS9nY2MvZ2ltcGxlLXJhbmdlLWluZmVyLmNjCisrKyBiL2djYy9naW1wbGUtcmFu Z2UtaW5mZXIuY2MKQEAgLTM1LDYgKzM1LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmls ZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJnaW1wbGUtaXRlcmF0b3IuaCIKICNp bmNsdWRlICJnaW1wbGUtd2Fsay5oIgogI2luY2x1ZGUgImNmZ2FuYWwuaCIKKyNpbmNsdWRlICJ0 cmVlLWRmYS5oIgogCiAvLyBBZGFwdGVkIGZyb20gaW5mZXJfbm9ubnVsbF9yYW5nZV9ieV9kZXJl ZmVyZW5jZSBhbmQgY2hlY2tfbG9hZHN0b3JlCiAvLyB0byBwcm9jZXNzIG5vbm51bGwgc3NhX25h bWUgT1AgaW4gUy4gIERBVEEgY29udGFpbnMgYSBwb2ludGVyIHRvIGEKQEAgLTExMSw2ICsxMTIs NDUgQEAgZ2ltcGxlX2luZmVyX3JhbmdlOjpnaW1wbGVfaW5mZXJfcmFuZ2UgKGdpbXBsZSAqcykK ICAgICAgIC8vIEZhbGx0aHJ1IGFuZCB3YWxrIGxvYWQvc3RvcmUgb3BzIG5vdy4KICAgICB9CiAK KyAgLy8gTG9vayBmb3IgQVNTVU1FIGNhbGxzLCBhbmQgY2FsbCBxdWVyeV9hc3N1bWVfY2FsbCBm b3IgZWFjaCBhcmd1bWVudAorICAvLyB0byBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYW55IGluZmVy cmVkIHJhbmdlIHRvIGJlIGhhZC4KKyAgaWYgKGlzX2E8Z2NhbGwgKj4gKHMpICYmIGdpbXBsZV9j YWxsX2ludGVybmFsX3AgKHMpCisgICAgICAmJiBnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAocykg PT0gSUZOX0FTU1VNRSkKKyAgICB7CisgICAgICB0cmVlIGFyZzsKKyAgICAgIHVuc2lnbmVkIGk7 CisgICAgICB0cmVlIGFzc3VtZV9pZCA9IFRSRUVfT1BFUkFORCAoZ2ltcGxlX2NhbGxfYXJnIChz LCAwKSwgMCk7CisgICAgICBzdHJ1Y3QgZnVuY3Rpb24gKmZ1biA9IERFQ0xfU1RSVUNUX0ZVTkNU SU9OIChhc3N1bWVfaWQpOworICAgICAgZm9yIChhcmcgPSBERUNMX0FSR1VNRU5UUyAoYXNzdW1l X2lkKSwgaSA9IDE7CisJICAgYXJnICYmIGkgPCBnaW1wbGVfY2FsbF9udW1fYXJncyAocyk7CisJ ICAgaSsrLCBhcmcgPSBERUNMX0NIQUlOIChhcmcpKQorCXsKKwkgIHRyZWUgb3AgPSBnaW1wbGVf Y2FsbF9hcmcgKHMsIGkpOworCSAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChvcCk7CisJICB0cmVl IGRlZiA9IHNzYV9kZWZhdWx0X2RlZiAoZnVuLCBhcmcpOworCSAgaWYgKHR5cGUgIT0gVFJFRV9U WVBFIChhcmcpIHx8ICFkZWYpCisJICAgIGNvbnRpbnVlOworCSAgaWYgKGdpbXBsZV9yYW5nZV9z c2FfcCAob3ApICYmIFZhbHVlX1JhbmdlOjpzdXBwb3J0c190eXBlX3AgKHR5cGUpKQorCSAgICB7 CisJICAgICAgVmFsdWVfUmFuZ2UgYXNzdW1lX3JhbmdlICh0eXBlKTsKKwkgICAgICBnbG9iYWxf cmFuZ2VzLnJhbmdlX29mX2V4cHIgKGFzc3VtZV9yYW5nZSwgZGVmKTsKKwkJeworCQkgIGFkZF9y YW5nZSAob3AsIGFzc3VtZV9yYW5nZSk7CisJCSAgaWYgKGR1bXBfZmlsZSkKKwkJICAgIHsKKwkJ ICAgICAgcHJpbnRfZ2VuZXJpY19leHByIChkdW1wX2ZpbGUsIGFzc3VtZV9pZCwgVERGX1NMSU0p OworCQkgICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICIgYXNzdW1lIGluZmVycmVkIHJhbmdlIG9m ICIpOworCQkgICAgICBwcmludF9nZW5lcmljX2V4cHIgKGR1bXBfZmlsZSwgb3AsIFRERl9TTElN KTsKKwkJICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiIChwYXJhbSAiKTsKKwkJICAgICAgcHJp bnRfZ2VuZXJpY19leHByIChkdW1wX2ZpbGUsIGFyZywgVERGX1NMSU0pOworCQkgICAgICBmcHJp bnRmIChkdW1wX2ZpbGUsICIpID0gIik7CisJCSAgICAgIGFzc3VtZV9yYW5nZS5kdW1wIChkdW1w X2ZpbGUpOworCQkgICAgICBmcHV0YyAoJ1xuJywgZHVtcF9maWxlKTsKKwkJICAgIH0KKwkJfQor CSAgICB9CisJfQorICAgIH0KICAgLy8gTG9vayBmb3IgcG9zc2libGUgbm9uLW51bGwgdmFsdWVz LgogICBpZiAoZmxhZ19kZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcyAmJiBnaW1wbGVfY29kZSAo cykgIT0gR0lNUExFX0FTTQogICAgICAgJiYgIWdpbXBsZV9jbG9iYmVyX3AgKHMpKQotLSAKMi4z Ny4zCgo= --------------VYHoMHLXxg90iPoiLfeB0WnZ Content-Type: text/x-patch; charset=UTF-8; name="0002-assume_query-support.patch" Content-Disposition: attachment; filename="0002-assume_query-support.patch" Content-Transfer-Encoding: base64 RnJvbSBmMTYzODI2ZjBlMmIyNjZjNjY4ZTE1MDBiM2ZlYjlhMjEwNTY5YTBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogVHVlLCAxOCBPY3QgMjAyMiAxNjozMDowNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMi8z XSBhc3N1bWVfcXVlcnkgc3VwcG9ydAoKLS0tCiBnY2MvZ2ltcGxlLXJhbmdlLWdvcmkuaCB8ICAg NiArLQogZ2NjL2dpbXBsZS1yYW5nZS5jYyAgICAgfCAxNjEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogZ2NjL2dpbXBsZS1yYW5nZS5oICAgICAgfCAgMTcgKysrKysK IDMgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS1nb3JpLmggYi9nY2MvZ2ltcGxlLXJhbmdlLWdvcmku aAppbmRleCBjN2EzMjE2MmExYi4uNmNjNTMzYjU4YjIgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUt cmFuZ2UtZ29yaS5oCisrKyBiL2djYy9naW1wbGUtcmFuZ2UtZ29yaS5oCkBAIC0xNjUsMTUgKzE2 NSwxNSBAQCBwdWJsaWM6CiAgIGJvb2wgaGFzX2VkZ2VfcmFuZ2VfcCAodHJlZSBuYW1lLCBiYXNp Y19ibG9jayBiYiA9IE5VTEwpOwogICBib29sIGhhc19lZGdlX3JhbmdlX3AgKHRyZWUgbmFtZSwg ZWRnZSBlKTsKICAgdm9pZCBkdW1wIChGSUxFICpmKTsKKyAgYm9vbCBjb21wdXRlX29wZXJhbmRf cmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxlICpzdG10LCBjb25zdCB2cmFuZ2UgJmxocywKKwkJCSAg ICAgIHRyZWUgbmFtZSwgY2xhc3MgZnVyX3NvdXJjZSAmc3JjLAorCQkJICAgICAgdmFsdWVfcmVs YXRpb24gKnJlbCA9IE5VTEwpOwogcHJpdmF0ZToKICAgYm9vbCByZWZpbmVfdXNpbmdfcmVsYXRp b24gKHRyZWUgb3AxLCB2cmFuZ2UgJm9wMV9yYW5nZSwKIAkJCSAgICAgIHRyZWUgb3AyLCB2cmFu Z2UgJm9wMl9yYW5nZSwKIAkJCSAgICAgIGZ1cl9zb3VyY2UgJnNyYywgcmVsYXRpb25fa2luZCBr KTsKICAgYm9vbCBtYXlfcmVjb21wdXRlX3AgKHRyZWUgbmFtZSwgZWRnZSBlKTsKICAgYm9vbCBt YXlfcmVjb21wdXRlX3AgKHRyZWUgbmFtZSwgYmFzaWNfYmxvY2sgYmIgPSBOVUxMKTsKLSAgYm9v bCBjb21wdXRlX29wZXJhbmRfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxlICpzdG10LCBjb25zdCB2 cmFuZ2UgJmxocywKLQkJCSAgICAgIHRyZWUgbmFtZSwgY2xhc3MgZnVyX3NvdXJjZSAmc3JjLAot CQkJICAgICAgdmFsdWVfcmVsYXRpb24gKnJlbCA9IE5VTEwpOwogICBib29sIGNvbXB1dGVfb3Bl cmFuZF9yYW5nZV9zd2l0Y2ggKHZyYW5nZSAmciwgZ3N3aXRjaCAqcywgY29uc3QgdnJhbmdlICZs aHMsCiAJCQkJICAgICB0cmVlIG5hbWUsIGZ1cl9zb3VyY2UgJnNyYyk7CiAgIGJvb2wgY29tcHV0 ZV9vcGVyYW5kMV9yYW5nZSAodnJhbmdlICZyLCBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciAmaGFu ZGxlciwKZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtcmFuZ2UuY2MgYi9nY2MvZ2ltcGxlLXJhbmdl LmNjCmluZGV4IGQ2N2Q2NDk5Yzc4Li4wOTkwYzFjYTAxZSAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBs ZS1yYW5nZS5jYworKysgYi9nY2MvZ2ltcGxlLXJhbmdlLmNjCkBAIC02NDUsMyArNjQ1LDE2NCBA QCBkaXNhYmxlX3JhbmdlciAoc3RydWN0IGZ1bmN0aW9uICpmdW4pCiAgIGRlbGV0ZSBmdW4tPnhf cmFuZ2VfcXVlcnk7CiAgIGZ1bi0+eF9yYW5nZV9xdWVyeSA9IE5VTEw7CiB9CisKKy8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorCisvLyBJZiB0aGVyZSBpcyBhIG5vbi12YXJ5aW5nIHZhbHVlIGFzc29jaWF0 ZWQgd2l0aCBOQU1FLCByZXR1cm4gdHJ1ZSBhbmQgdGhlCisvLyByYW5nZSBpbiBSLgorCitib29s Cithc3N1bWVfcXVlcnk6OmFzc3VtZV9yYW5nZV9wICh2cmFuZ2UgJnIsIHRyZWUgbmFtZSkKK3sK KyAgaWYgKGdsb2JhbC5nZXRfZ2xvYmFsX3JhbmdlIChyLCBuYW1lKSkKKyAgICByZXR1cm4gIXIu dmFyeWluZ19wICgpOworICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIFF1ZXJ5IHVzZWQgYnkgR09S SSB0byBwaWNrIHVwIGFueSBrbm93biB2YWx1ZSBvbiBlbnRyeSB0byBhIGJsb2NrLgorCitib29s Cithc3N1bWVfcXVlcnk6OnJhbmdlX29mX2V4cHIgKHZyYW5nZSAmciwgdHJlZSBleHByLCBnaW1w bGUgKnN0bXQpCit7CisgIGlmICghZ2ltcGxlX3JhbmdlX3NzYV9wIChleHByKSkKKyAgICByZXR1 cm4gZ2V0X3RyZWVfcmFuZ2UgKHIsIGV4cHIsIHN0bXQpOworCisgIGlmICghZ2xvYmFsLmdldF9n bG9iYWxfcmFuZ2UgKHIsIGV4cHIpKQorICAgIHIuc2V0X3ZhcnlpbmcgKFRSRUVfVFlQRSAoZXhw cikpOworICByZXR1cm4gdHJ1ZTsKK30KKworLy8gSWYgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0 dXJucyBhbiBpbnRlZ3JhbCB2YWx1ZSwgYW5kIGhhcyBhIHNpbmdsZSByZXR1cm4KKy8vIHN0YXRl bWVudCwgaXQgd2lsbCBjYWxjdWxhdGUgYW55IFNTQV9OQU1FUyBpcyBjYW4gZGV0ZXJtaW5lIHJh bmdlcyBmb3JyCisvLyBhc3N1bWluZyB0aGUgZnVuY3Rpb24gcmV0dXJucyAxLgorCithc3N1bWVf cXVlcnk6OmFzc3VtZV9xdWVyeSAoKQoreworICBiYXNpY19ibG9jayBleGl0X2JiID0gRVhJVF9C TE9DS19QVFJfRk9SX0ZOIChjZnVuKTsKKyAgaWYgKHNpbmdsZV9wcmVkX3AgKGV4aXRfYmIpKQor ICAgIHsKKyAgICAgIGJhc2ljX2Jsb2NrIGJiID0gc2luZ2xlX3ByZWQgKGV4aXRfYmIpOworICAg ICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgZ3NpID0gZ3NpX2xhc3Rfbm9uZGVidWdfYmIgKGJiKTsK KyAgICAgIGlmIChnc2lfZW5kX3AgKGdzaSkpCisJcmV0dXJuOworICAgICAgZ2ltcGxlICpzID0g Z3NpX3N0bXQgKGdzaSk7CisgICAgICBpZiAoIWlzX2E8Z3JldHVybiAqPiAocykpCisJcmV0dXJu OworICAgICAgZ3JldHVybiAqZ3JldCA9IGFzX2E8Z3JldHVybiAqPiAocyk7CisgICAgICB0cmVl IG9wID0gZ2ltcGxlX3JldHVybl9yZXR2YWwgKGdyZXQpOworICAgICAgaWYgKCFnaW1wbGVfcmFu Z2Vfc3NhX3AgKG9wKSkKKwlyZXR1cm47CisgICAgICB0cmVlIGxoc190eXBlID0gVFJFRV9UWVBF IChvcCk7CisgICAgICBpZiAoIWlyYW5nZTo6c3VwcG9ydHNfcCAobGhzX3R5cGUpKQorCXJldHVy bjsKKworICAgICAgdW5zaWduZWQgcHJlYyA9IFRZUEVfUFJFQ0lTSU9OIChsaHNfdHlwZSk7Cisg ICAgICBpbnRfcmFuZ2U8Mj4gbGhzX3JhbmdlIChsaHNfdHlwZSwgd2k6Om9uZSAocHJlYyksIHdp OjpvbmUgKHByZWMpKTsKKyAgICAgIGdsb2JhbC5zZXRfZ2xvYmFsX3JhbmdlIChvcCwgbGhzX3Jh bmdlKTsKKworICAgICAgZ2ltcGxlICpkZWYgPSBTU0FfTkFNRV9ERUZfU1RNVCAob3ApOworICAg ICAgaWYgKCFkZWYgfHwgZ2ltcGxlX2dldF9saHMgKGRlZikgIT0gb3ApCisJcmV0dXJuOworICAg ICAgZnVyX3N0bXQgc3JjIChncmV0LCB0aGlzKTsKKyAgICAgIGNhbGN1bGF0ZV9zdG10IChkZWYs IGxoc19yYW5nZSwgc3JjKTsKKyAgICB9Cit9CisKKy8vIEV2YWx1YXRlIG9wZXJhbmQgT1Agb24g c3RhdGVtZW50IFMsIHVzaW5nIHRoZSBwcm92aWRlZCBMSFMgcmFuZ2UuCisvLyBJZiBzdWNjZXNz ZnVsLCBzZXQgdGhlIHJhbmdlIGluIHRoZSBnbG9iYWwgdGFibGUsIHRoZW4gdmlzaXQgT1AncyBk ZWYgc3RtdC4KKwordm9pZAorYXNzdW1lX3F1ZXJ5OjpjYWxjdWxhdGVfb3AgKHRyZWUgb3AsIGdp bXBsZSAqcywgdnJhbmdlICZsaHMsIGZ1cl9zb3VyY2UgJnNyYykKK3sKKyAgVmFsdWVfUmFuZ2Ug b3BfcmFuZ2UgKFRSRUVfVFlQRSAob3ApKTsKKyAgaWYgKCFnbG9iYWwuZ2V0X2dsb2JhbF9yYW5n ZSAob3BfcmFuZ2UsIG9wKQorICAgICAgJiYgbV9nb3JpLmNvbXB1dGVfb3BlcmFuZF9yYW5nZSAo b3BfcmFuZ2UsIHMsIGxocywgb3AsIHNyYykKKyAgICAgICYmICFvcF9yYW5nZS52YXJ5aW5nX3Ag KCkpCisgICAgeworICAgICAgZ2xvYmFsLnNldF9nbG9iYWxfcmFuZ2UgKG9wLCBvcF9yYW5nZSk7 CisgICAgICBnaW1wbGUgKmRlZl9zdG10ID0gU1NBX05BTUVfREVGX1NUTVQgKG9wKTsKKyAgICAg IGlmIChkZWZfc3RtdCAmJiBnaW1wbGVfZ2V0X2xocyAoZGVmX3N0bXQpID09IG9wKQorCWNhbGN1 bGF0ZV9zdG10IChkZWZfc3RtdCwgb3BfcmFuZ2UsIHNyYyk7CisgICAgfQorfQorCisvLyBFdmFs dWF0ZSBQSEkgc3RhdGVtZW50LCB1c2luZyB0aGUgcHJvdmlkZWQgTEhTIHJhbmdlLgorLy8gQ2hl Y2sgZWFjaCBjb25zdGFudCBhcmd1bWVudCBwcmVkZWNlc3NvciBpZiBpdCBjYW4gYmUgdGFrZW4K Ky8vIHByb3ZpZGUgTEhTIHRvIGFueSBzeW1ib2xpYyBhcmdtZXVlbnRzLCBhbmQgcHJvY2VzcyB0 aGVpciBkZWYgc3RhdGVtZW50cy4KKwordm9pZAorYXNzdW1lX3F1ZXJ5OjpjYWxjdWxhdGVfcGhp IChncGhpICpwaGksIHZyYW5nZSAmbGhzX3JhbmdlLCBmdXJfc291cmNlICZzcmMpCit7CisgIGZv ciAodW5zaWduZWQgeD0gMDsgeCA8IGdpbXBsZV9waGlfbnVtX2FyZ3MgKHBoaSk7IHgrKykKKyAg ICB7CisgICAgICB0cmVlIGFyZyA9IGdpbXBsZV9waGlfYXJnX2RlZiAocGhpLCB4KTsKKyAgICAg IFZhbHVlX1JhbmdlIGFyZ19yYW5nZSAoVFJFRV9UWVBFIChhcmcpKTsKKyAgICAgIGlmIChnaW1w bGVfcmFuZ2Vfc3NhX3AgKGFyZykpCisJeworCSAgLy8gQSBzeW1ib2wgYXJnIHdpbGwgYmUgdGhl IExIUyB2YWx1ZS4KKwkgIGFyZ19yYW5nZSA9IGxoc19yYW5nZTsKKwkgIHJhbmdlX2Nhc3QgKGFy Z19yYW5nZSwgVFJFRV9UWVBFIChhcmcpKTsKKwkgIGlmICghZ2xvYmFsLmdldF9nbG9iYWxfcmFu Z2UgKGFyZ19yYW5nZSwgYXJnKSkKKwkgICAgeworCSAgICAgIGdsb2JhbC5zZXRfZ2xvYmFsX3Jh bmdlIChhcmcsIGFyZ19yYW5nZSk7CisJICAgICAgZ2ltcGxlICpkZWZfc3RtdCA9IFNTQV9OQU1F X0RFRl9TVE1UIChhcmcpOworCSAgICAgIGlmIChkZWZfc3RtdCAmJiBnaW1wbGVfZ2V0X2xocyAo ZGVmX3N0bXQpID09IGFyZykKKwkJY2FsY3VsYXRlX3N0bXQgKGRlZl9zdG10LCBhcmdfcmFuZ2Us IHNyYyk7CisJICAgIH0KKwl9CisgICAgICBlbHNlIGlmIChnZXRfdHJlZV9yYW5nZSAoYXJnX3Jh bmdlLCBhcmcsIE5VTEwpKQorCXsKKwkgIC8vIElmIHRoaXMgaXMgYSBjb25zdGFudCB2YWx1ZSB0 aGF0IGRpZmZlcnMgZnJvbSBMSFMsIHRoaXMKKwkgIC8vIGVkZ2UgY2Fubm90IGJlIHRha2VuLgor CSAgYXJnX3JhbmdlLmludGVyc2VjdCAobGhzX3JhbmdlKTsKKwkgIGlmIChhcmdfcmFuZ2UudW5k ZWZpbmVkX3AgKCkpCisJICAgIGNvbnRpbnVlOworCSAgLy8gT3RoZXJ3aXNlIGNoZWNrIHRoZSBj b25kaXRpb24gZmVlZGluZyB0aGlzIGVkZ2UuCisJICBlZGdlIGUgPSBnaW1wbGVfcGhpX2FyZ19l ZGdlIChwaGksIHgpOworCSAgY2hlY2tfdGFrZW5fZWRnZSAoZSwgc3JjKTsKKwl9CisgICAgfQor fQorCisvLyBJZiBhbiBlZGdlIGlzIGtub3duIHRvIGJlIHRha2VuLCBleGFtaW5lIHRoZSBvdXRn b2luZyBlZGdlIHRvIHNlZQorLy8gaWYgaXQgY2FycmllcyBhbnkgcmFuZ2UgaW5mb3JtYXRpb24g dGhhdCBjYW4gYWxzbyBiZSBldmFsdWF0ZWQuCisKK3ZvaWQKK2Fzc3VtZV9xdWVyeTo6Y2hlY2tf dGFrZW5fZWRnZSAoZWRnZSBlLCBmdXJfc291cmNlICZzcmMpCit7CisgIGdpbXBsZSAqc3RtdCA9 IGdpbXBsZV9vdXRnb2luZ19yYW5nZV9zdG10X3AgKGUtPnNyYyk7CisgIGlmIChzdG10ICYmIGlz X2E8Z2NvbmQgKj4gKHN0bXQpKQorICAgIHsKKyAgICAgIGludF9yYW5nZTwyPiBjb25kOworICAg ICAgZ2NvbmRfZWRnZV9yYW5nZSAoY29uZCwgZSk7CisgICAgICBjYWxjdWxhdGVfc3RtdCAoc3Rt dCwgY29uZCwgc3JjKTsKKyAgICB9Cit9CisKKy8vIEV2YWx1YXRlIHN0YXRlbWVudCBTIHdoaWNo IHByb2R1Y2VzIHJhbmdlIExIU19SQU5HRS4KKwordm9pZAorYXNzdW1lX3F1ZXJ5OjpjYWxjdWxh dGVfc3RtdCAoZ2ltcGxlICpzLCB2cmFuZ2UgJmxoc19yYW5nZSwgZnVyX3NvdXJjZSAmc3JjKQor eworICBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciBoYW5kbGVyIChzKTsKKyAgaWYgKGhhbmRsZXIp CisgICAgeworICAgICAgdHJlZSBvcCA9IGdpbXBsZV9yYW5nZV9zc2FfcCAoaGFuZGxlci5vcGVy YW5kMSAoKSk7CisgICAgICBpZiAob3ApCisJY2FsY3VsYXRlX29wIChvcCwgcywgbGhzX3Jhbmdl LCBzcmMpOworICAgICAgb3AgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGhhbmRsZXIub3BlcmFuZDIg KCkpOworICAgICAgaWYgKG9wKQorCWNhbGN1bGF0ZV9vcCAob3AsIHMsIGxoc19yYW5nZSwgc3Jj KTsKKyAgICB9CisgIGVsc2UgaWYgKGlzX2E8Z3BoaSAqPiAocykpCisgICAgeworICAgICAgY2Fs Y3VsYXRlX3BoaSAoYXNfYTxncGhpICo+IChzKSwgbGhzX3JhbmdlLCBzcmMpOworICAgICAgLy8g RG9uJ3QgZnVydGhlciBjaGVjayBwcmVkZWNlc3NvcnMgb2YgYmxvY2tzIHdpdGggUEhJcy4KKyAg ICAgIHJldHVybjsKKyAgICB9CisKKyAgLy8gRXZlbiBpZiB0aGUgd2FsayBiYWNrIHRlcm1pbmF0 ZXMgYmVmb3JlIHRoZSB0b3AsIGlmIHRoaXMgaXMgYSBzaW5nbGUKKyAgLy8gcHJlZGVjZXNzb3Ig YmxvY2ssIHNlZSBpZiB0aGUgcHJlZGVjZXNzb3IgcHJvdmlkZWQgYW55IHJhbmdlcyB0byBnZXQg aGVyZS4KKyAgaWYgKHNpbmdsZV9wcmVkX3AgKGdpbXBsZV9iYiAocykpKQorICAgIGNoZWNrX3Rh a2VuX2VkZ2UgKHNpbmdsZV9wcmVkX2VkZ2UgKGdpbXBsZV9iYiAocykpLCBzcmMpOworfQpkaWZm IC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS5oIGIvZ2NjL2dpbXBsZS1yYW5nZS5oCmluZGV4IDhi MmZmNTY4NWU1Li40ZGM3YmMzM2M1ZiAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1yYW5nZS5oCisr KyBiL2djYy9naW1wbGUtcmFuZ2UuaApAQCAtODAsNCArODAsMjEgQEAgZXh0ZXJuIGdpbXBsZV9y YW5nZXIgKmVuYWJsZV9yYW5nZXIgKHN0cnVjdCBmdW5jdGlvbiAqbSwKIAkJCQkgICAgIGJvb2wg dXNlX2ltbV91c2VzID0gdHJ1ZSk7CiBleHRlcm4gdm9pZCBkaXNhYmxlX3JhbmdlciAoc3RydWN0 IGZ1bmN0aW9uICopOwogCitjbGFzcyBhc3N1bWVfcXVlcnkgOiBwdWJsaWMgcmFuZ2VfcXVlcnkK K3sKK3B1YmxpYzoKKyAgYXNzdW1lX3F1ZXJ5ICgpOworICBib29sIGFzc3VtZV9yYW5nZV9wICh2 cmFuZ2UgJnIsIHRyZWUgbmFtZSk7CisgIHZpcnR1YWwgYm9vbCByYW5nZV9vZl9leHByICh2cmFu Z2UgJnIsIHRyZWUgZXhwciwgZ2ltcGxlICogPSBOVUxMKTsKK3Byb3RlY3RlZDoKKyAgdm9pZCBj YWxjdWxhdGVfc3RtdCAoZ2ltcGxlICpzLCB2cmFuZ2UgJmxoc19yYW5nZSwgZnVyX3NvdXJjZSAm c3JjKTsKKyAgdm9pZCBjYWxjdWxhdGVfb3AgKHRyZWUgb3AsIGdpbXBsZSAqcywgdnJhbmdlICZs aHMsIGZ1cl9zb3VyY2UgJnNyYyk7CisgIHZvaWQgY2FsY3VsYXRlX3BoaSAoZ3BoaSAqcGhpLCB2 cmFuZ2UgJmxoc19yYW5nZSwgZnVyX3NvdXJjZSAmc3JjKTsKKyAgdm9pZCBjaGVja190YWtlbl9l ZGdlIChlZGdlIGUsIGZ1cl9zb3VyY2UgJnNyYyk7CisKKyAgc3NhX2dsb2JhbF9jYWNoZSBnbG9i YWw7CisgIGdvcmlfY29tcHV0ZSBtX2dvcmk7Cit9OworCisKICNlbmRpZiAvLyBHQ0NfR0lNUExF X1JBTkdFX0gKLS0gCjIuMzcuMwoK --------------VYHoMHLXxg90iPoiLfeB0WnZ Content-Type: text/x-patch; charset=UTF-8; name="0003-Show-output-in-assume-pass.patch" Content-Disposition: attachment; filename="0003-Show-output-in-assume-pass.patch" Content-Transfer-Encoding: base64 RnJvbSA0MWE5OGNmNTA3Yjk2ZDljNjRlZWQ3YzBmM2I0ZGFlYzUzNTdlNWEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogTW9uLCAxNyBPY3QgMjAyMiAxMjoyODoyMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMy8z XSBTaG93IG91dHB1dCBpbiBhc3N1bWUgcGFzcwoKLS0tCiBnY2MvdHJlZS12cnAuY2MgfCAzMSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMzEgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZycC5jYyBiL2djYy90cmVlLXZycC5jYwpp bmRleCAxYWRiMTVjOTkzNC4uYjdjNTljZmEwNTcgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXZycC5j YworKysgYi9nY2MvdHJlZS12cnAuY2MKQEAgLTUwLDYgKzUwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJnaW1wbGUtcmFu Z2UtcGF0aC5oIgogI2luY2x1ZGUgInZhbHVlLXBvaW50ZXItZXF1aXYuaCIKICNpbmNsdWRlICJn aW1wbGUtZm9sZC5oIgorI2luY2x1ZGUgInRyZWUtZGZhLmgiCiAKIC8qIFNldCBvZiBTU0EgbmFt ZXMgZm91bmQgbGl2ZSBkdXJpbmcgdGhlIFJQTyB0cmF2ZXJzYWwgb2YgdGhlIGZ1bmN0aW9uCiAg ICBmb3Igc3RpbGwgYWN0aXZlIGJhc2ljLWJsb2Nrcy4gICovCkBAIC00NDY1LDYgKzQ0NjYsMzYg QEAgcHVibGljOgogICBib29sIGdhdGUgKGZ1bmN0aW9uICpmdW4pIGZpbmFsIG92ZXJyaWRlIHsg cmV0dXJuIGZ1bi0+YXNzdW1lX2Z1bmN0aW9uOyB9CiAgIHVuc2lnbmVkIGludCBleGVjdXRlIChm dW5jdGlvbiAqKSBmaW5hbCBvdmVycmlkZQogICAgIHsKKyAgICAgIGFzc3VtZV9xdWVyeSBxdWVy eTsKKyAgICAgIGlmIChkdW1wX2ZpbGUpCisJZnByaW50ZiAoZHVtcF9maWxlLCAiQXNzdW1wdGlv bnMgOlxuLS0tLS0tLS0tLS0tLS1cbiIpOworCisgICAgICBmb3IgKHRyZWUgYXJnID0gREVDTF9B UkdVTUVOVFMgKGNmdW4tPmRlY2wpOyBhcmc7IGFyZyA9IERFQ0xfQ0hBSU4gKGFyZykpCisJewor CSAgdHJlZSBuYW1lID0gc3NhX2RlZmF1bHRfZGVmIChjZnVuLCBhcmcpOworCSAgaWYgKCFuYW1l IHx8ICFnaW1wbGVfcmFuZ2Vfc3NhX3AgKG5hbWUpKQorCSAgICBjb250aW51ZTsKKwkgIHRyZWUg dHlwZSA9IFRSRUVfVFlQRSAobmFtZSk7CisJICBpZiAoIVZhbHVlX1JhbmdlOjpzdXBwb3J0c190 eXBlX3AgKHR5cGUpKQorCSAgICBjb250aW51ZTsKKwkgIFZhbHVlX1JhbmdlIGFzc3VtZV9yYW5n ZSAodHlwZSk7CisJICBpZiAocXVlcnkuYXNzdW1lX3JhbmdlX3AgKGFzc3VtZV9yYW5nZSwgbmFt ZSkpCisJICAgIHsKKwkgICAgICBzZXRfcmFuZ2VfaW5mbyAobmFtZSwgYXNzdW1lX3JhbmdlKTsK KwkgICAgICBpZiAoZHVtcF9maWxlKQorCQl7CisJCSAgcHJpbnRfZ2VuZXJpY19leHByIChkdW1w X2ZpbGUsIG5hbWUsIFRERl9TTElNKTsKKwkJICBmcHJpbnRmIChkdW1wX2ZpbGUsICIgLT4gIik7 CisJCSAgYXNzdW1lX3JhbmdlLmR1bXAgKGR1bXBfZmlsZSk7CisJCSAgZnB1dGMgKCdcbicsIGR1 bXBfZmlsZSk7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGlmIChkdW1wX2ZpbGUpCisJeworCSAg ZnB1dGMgKCdcbicsIGR1bXBfZmlsZSk7CisJICBnaW1wbGVfZHVtcF9jZmcgKGR1bXBfZmlsZSwg ZHVtcF9mbGFncyk7CisJfQogICAgICAgcmV0dXJuIFRPRE9fZGlzY2FyZF9mdW5jdGlvbjsKICAg ICB9CiAKLS0gCjIuMzcuMwoK --------------VYHoMHLXxg90iPoiLfeB0WnZ--