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 [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 85A583858431 for ; Thu, 7 Oct 2021 20:50:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 85A583858431 Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-223-j5z7L3hWNFaAoXTJrUZ4MQ-1; Thu, 07 Oct 2021 16:50:34 -0400 X-MC-Unique: j5z7L3hWNFaAoXTJrUZ4MQ-1 Received: by mail-qv1-f70.google.com with SMTP id x16-20020a0cfe10000000b003834102a98cso465991qvr.9 for ; Thu, 07 Oct 2021 13:50:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to; bh=XtkWok+NmP/nEoHtAUCQ4SADL977y4ntqF2+s7zJnzI=; b=NNp8yvxRPmWBE/q0kU4ulQ30guM8pwIeKA01nvnjH3Nzv22+/og8cVG55bockZO168 31BHLitJWa9dj64ZkNkSqA2PdYH0ufRYmLLYKK58My9sJ3RiyBaZ8+mRsLYVqzf/amRJ ivdmtJ7rx22a8uCTeDzwpCDhSx+dybup+8+RVVkW4arqTo60IIVUg8/p09STSue91hqh 6HZzsMY7BdS05aA0yDLyMUpt0oS9HtuDD363v0vPsPdcnJl1S2PKP232U0vbwz7nHz8e wR1wOw3zh6iXGwawNyvwdSc/5WYellSCw/n+/54kr81sKu/hYWp2m1qQdrbNW5hzbZto bpSA== X-Gm-Message-State: AOAM531a7qtNL4cEIkAV02rovNZISQ7rzvmZ+Fk0OfC3Da/gBuEQIEjG yCkXURK5LTXhsDfckFwyxJAekNy0VKarTbf2zHZ4tJkfiYsm76bKtFXdh8+l8Atjgd3H6fpTHII YWtUpF5vmfT9Hsrq7YQ== X-Received: by 2002:ac8:5ac6:: with SMTP id d6mr7035614qtd.383.1633639833083; Thu, 07 Oct 2021 13:50:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwRJ53p1SYg4/34VGZpF7WHnABthi1wtVRV8CC+xGRAFaEIjOqgAV0pZALMU2iYuFpj8wdrKg== X-Received: by 2002:ac8:5ac6:: with SMTP id d6mr7035581qtd.383.1633639832639; Thu, 07 Oct 2021 13:50:32 -0700 (PDT) Received: from [192.168.1.149] (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id u21sm414733qke.63.2021.10.07.13.50.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 07 Oct 2021 13:50:31 -0700 (PDT) Message-ID: <7366fa5d-27be-9ed4-d25a-0311ec370f3d@redhat.com> Date: Thu, 7 Oct 2021 16:50:30 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.2 Subject: Re: [PATCH] c++: fix cases of core1001/1322 by not dropping cv-qualifier of function parameter of type of typename or decltype[PR101402,PR102033,PR102034,PR102039,PR102 To: Nick Huang , Gcc-patches References: From: Jason Merrill In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------LHugENyDoEHvaMBY9OpWh0Jf" Content-Language: en-US X-Spam-Status: No, score=-13.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_NUMSUBJECT, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Oct 2021 20:50:40 -0000 This is a multi-part message in MIME format. --------------LHugENyDoEHvaMBY9OpWh0Jf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 10/3/21 07:14, Nick Huang wrote: > I made a little improvement of my fix by including template > type parameter to not dropping cv-const because they are similar to dependent > type which you cannot determine whether they are top-level cv-qualifier or not > until instantiation. > > + if (processing_template_decl > + && (TREE_CODE (type) == TYPENAME_TYPE > + || TREE_CODE (type) == DECLTYPE_TYPE > ++ || TREE_CODE (type) == TEMPLATE_TYPE_PARM // this is new I think WILDCARD_TYPE_P is what you want, except... > 1. It fix your test case of > template > struct A{ > void f(T); > }; > template > void A::f(const T){ } > template<> > void A::f(const int*){} > > current GCC mistakenly accepts without considering the gap of missing "const" > between declaration and out of line definition. clang correctly rejects it. > (https://www.godbolt.org/z/qb9Tf99eK) and explains the cause nicely. > My fix also rejects it. Your patch rejects that testcase even without the specialization on int[], which no other compiler I'm aware of does; this is why I think this approach is wrong. I think your approach would make sense for the standard to specify, but it doesn't (currently). You seem to have missed my September 28 mail that argued for fixing the bug in determine_specialization that was preventing the 92010 fix from handling these cases. I tried removing the redundant code in determine_specialization, but then it turned out that I needed to fix the corresponding code in fn_type_unification, as in the patch below. This approach does not reject the testcase above, which I think is OK; whether the specialization is well-formed depends on which declaration we are trying to specialize, and GCC chooses the definition. Thoughts? --------------LHugENyDoEHvaMBY9OpWh0Jf Content-Type: text/x-patch; charset=UTF-8; name="0001-c-array-cv-quals-and-template-specialization.patch" Content-Disposition: attachment; filename="0001-c-array-cv-quals-and-template-specialization.patch" Content-Transfer-Encoding: base64 RnJvbSA4NjcxNDMyYWFjMzQ0NDYwM2UwMGMwN2QwZDVkNmNlYmRhN2Q1ZGE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpEYXRl OiBUdWUsIDI4IFNlcCAyMDIxIDEwOjAyOjA0IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gYysrOiBh cnJheSBjdi1xdWFscyBhbmQgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24KVG86IGdjYy1wYXRjaGVz QGdjYy5nbnUub3JnCgpnY2MvY3AvQ2hhbmdlTG9nOgoKCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNp YWxpemF0aW9uKTogUmVtb3ZlIHJlZHVuZGFudCBjb2RlLgoJKGZuX3R5cGVfdW5pZmljYXRpb24p OiBDaGVjayBmb3IgbWlzbWF0Y2hlZCBsZW5ndGguCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTog SWdub3JlIHRlcm1pbmFsIHZvaWQuCgkoZ2V0X2JpbmRpbmdzKTogRG9uJ3Qgc3RvcCBhdCB2b2lk X2xpc3Rfbm9kZS4KCSogY2xhc3MuYyAocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVu Y3Rpb24pOiBMaWtld2lzZS4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogZysrLmRnL3Bh cnNlL3ByMTAxNDAyLkM6IE5vIGVycm9ycy4KCSogZysrLmRnL3RlbXBsYXRlL2Zuc3BlYzIuQzog TmV3IHRlc3QuCi0tLQogZ2NjL2NwL2NsYXNzLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIGdjYy9jcC9wdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMwICsrKysr KysrKysrKy0tLS0tLS0tLS0tLS0KIGdjYy90ZXN0c3VpdGUvZysrLmRnL3BhcnNlL3ByMTAxNDAy LkMgICB8ICA0ICsrLS0KIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRlL2Zuc3BlYzIuQyB8 ICA5ICsrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRl L2Zuc3BlYzIuQwoKZGlmZiAtLWdpdCBhL2djYy9jcC9jbGFzcy5jIGIvZ2NjL2NwL2NsYXNzLmMK aW5kZXggNTk2MTE2MjdkMTguLmYxNmU1MGI5ZGU5IDEwMDY0NAotLS0gYS9nY2MvY3AvY2xhc3Mu YworKysgYi9nY2MvY3AvY2xhc3MuYwpAQCAtODM4Miw3ICs4MzgyLDcgQEAgcmVzb2x2ZV9hZGRy ZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24gKHRyZWUgdGFyZ2V0X3R5cGUsCiAgICAgICBuYXJn cyA9IGxpc3RfbGVuZ3RoICh0YXJnZXRfYXJnX3R5cGVzKTsKICAgICAgIGFyZ3MgPSBYQUxMT0NB VkVDICh0cmVlLCBuYXJncyk7CiAgICAgICBmb3IgKGFyZyA9IHRhcmdldF9hcmdfdHlwZXMsIGlh ID0gMDsKLQkgICBhcmcgIT0gTlVMTF9UUkVFICYmIGFyZyAhPSB2b2lkX2xpc3Rfbm9kZTsKKwkg ICBhcmcgIT0gTlVMTF9UUkVFOwogCSAgIGFyZyA9IFRSRUVfQ0hBSU4gKGFyZyksICsraWEpCiAJ YXJnc1tpYV0gPSBUUkVFX1ZBTFVFIChhcmcpOwogICAgICAgbmFyZ3MgPSBpYTsKZGlmZiAtLWdp dCBhL2djYy9jcC9wdC5jIGIvZ2NjL2NwL3B0LmMKaW5kZXggMTllMDMzNjlmZmEuLjJlYjY0MWUw MzA0IDEwMDY0NAotLS0gYS9nY2MvY3AvcHQuYworKysgYi9nY2MvY3AvcHQuYwpAQCAtMjIzMCw3 ICsyMjMwLDYgQEAgZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uICh0cmVlIHRlbXBsYXRlX2lkLAog CXsKIAkgIHRyZWUgZGVjbF9hcmdfdHlwZXM7CiAJICB0cmVlIGZuX2FyZ190eXBlczsKLQkgIHRy ZWUgaW5zdHR5cGU7CiAKIAkgIC8qIEluIGNhc2Ugb2YgZXhwbGljaXQgc3BlY2lhbGl6YXRpb24s IHdlIG5lZWQgdG8gY2hlY2sgaWYKIAkgICAgIHRoZSBudW1iZXIgb2YgdGVtcGxhdGUgaGVhZGVy cyBhcHBlYXJpbmcgaW4gdGhlIHNwZWNpYWxpemF0aW9uCkBAIC0yMzU2LDIwICsyMzU1LDYgQEAg ZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uICh0cmVlIHRlbXBsYXRlX2lkLAogCSAgICAgICB0ZW1w bGF0ZSBhcmd1bWVudC4gICovCiAJICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgLyogUmVtb3Zl LCBmcm9tIHRoZSBzZXQgb2YgY2FuZGlkYXRlcywgYWxsIHRob3NlIGZ1bmN0aW9ucwotICAgICAg ICAgICAgIHdob3NlIGNvbnN0cmFpbnRzIGFyZSBub3Qgc2F0aXNmaWVkLiAqLwotICAgICAgICAg IGlmIChmbGFnX2NvbmNlcHRzICYmICFjb25zdHJhaW50c19zYXRpc2ZpZWRfcCAoZm4sIHRhcmdz KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgLy8gVGhlbiwgdHJ5IHRvIGZv cm0gdGhlIG5ldyBmdW5jdGlvbiB0eXBlLgotCSAgaW5zdHR5cGUgPSB0c3Vic3QgKFRSRUVfVFlQ RSAoZm4pLCB0YXJncywgdGZfZm5kZWNsX3R5cGUsIE5VTExfVFJFRSk7Ci0JICBpZiAoaW5zdHR5 cGUgPT0gZXJyb3JfbWFya19ub2RlKQotCSAgICBjb250aW51ZTsKLQkgIGZuX2FyZ190eXBlcwot CSAgICA9IHNraXBfYXJ0aWZpY2lhbF9wYXJtc19mb3IgKGZuLCBUWVBFX0FSR19UWVBFUyAoaW5z dHR5cGUpKTsKLQkgIGlmICghY29tcHBhcm1zIChmbl9hcmdfdHlwZXMsIGRlY2xfYXJnX3R5cGVz KSkKLQkgICAgY29udGludWU7Ci0KIAkgIC8qIFNhdmUgdGhpcyB0ZW1wbGF0ZSwgYW5kIHRoZSBh cmd1bWVudHMgZGVkdWNlZC4gICovCiAJICB0ZW1wbGF0ZXMgPSB0cmVlX2NvbnMgKHRhcmdzLCBm biwgdGVtcGxhdGVzKTsKIAl9CkBAIC0yMTg1Niw2ICsyMTg0MSwxNSBAQCBmbl90eXBlX3VuaWZp Y2F0aW9uICh0cmVlIGZuLAogCQkJCSBUUkVFX1ZBTFVFIChzYXJnKSk7CiAJICAgIGdvdG8gZmFp bDsKIAkgIH0KKyAgICAgIGlmICgoaSA8IG5hcmdzIHx8IHNhcmcpCisJICAvKiBhZGRfY2FuZGlk YXRlcyB1c2VzIERFRFVDRV9FWEFDVCBmb3IgeC5vcGVyYXRvciBmb28oKSwgYnV0IGFyZ3MKKwkg ICAgIGRvZXNuJ3QgY29udGFpbiB0aGUgdHJhaWxpbmcgdm9pZCwgYW5kIGNvbnYgZm5zIGFyZSBh bHdheXMgKCkuICAqLworCSAgJiYgIURFQ0xfQ09OVl9GTl9QIChkZWNsKSkKKwl7CisJICB1bnNp Z25lZCBuc2FyZ3MgPSBpICsgbGlzdF9sZW5ndGggKHNhcmcpOworCSAgdW5pZnlfYXJpdHkgKGV4 cGxhaW5fcCwgbmFyZ3MsIG5zYXJncyk7CisJICBnb3RvIGZhaWw7CisJfQogICAgIH0KIAogICAv KiBBZnRlciBkb2luZyBkZWR1Y3Rpb24gd2l0aCB0aGUgaW5oZXJpdGVkIGNvbnN0cnVjdG9yLCBh Y3R1YWxseSByZXR1cm4gYW4KQEAgLTIyMzc5LDYgKzIyMzczLDEwIEBAIHR5cGVfdW5pZmljYXRp b25fcmVhbCAodHJlZSB0cGFybXMsCiAgIGFyZ3MgPSB4YXJnczsKICAgbmFyZ3MgPSB4bmFyZ3M7 CiAKKyAgLyogT25seSBmbl90eXBlX3VuaWZpY2F0aW9uIGNhcmVzIGFib3V0IHRlcm1pbmFsIHZv aWQuICAqLworICBpZiAobmFyZ3MgJiYgYXJnc1tuYXJncy0xXSA9PSB2b2lkX3R5cGVfbm9kZSkK KyAgICAtLW5hcmdzOworCiAgIGlhID0gMDsKICAgd2hpbGUgKHBhcm1zICYmIHBhcm1zICE9IHZv aWRfbGlzdF9ub2RlCiAJICYmIGlhIDwgbmFyZ3MpCkBAIC0yNDg4MCw3ICsyNDg3OCw3IEBAIGdl dF9iaW5kaW5ncyAodHJlZSBmbiwgdHJlZSBkZWNsLCB0cmVlIGV4cGxpY2l0X2FyZ3MsIGJvb2wg Y2hlY2tfcmV0dHlwZSkKICAgbmFyZ3MgPSBsaXN0X2xlbmd0aCAoZGVjbF9hcmdfdHlwZXMpOwog ICBhcmdzID0gWEFMTE9DQVZFQyAodHJlZSwgbmFyZ3MpOwogICBmb3IgKGFyZyA9IGRlY2xfYXJn X3R5cGVzLCBpeCA9IDA7Ci0gICAgICAgYXJnICE9IE5VTExfVFJFRSAmJiBhcmcgIT0gdm9pZF9s aXN0X25vZGU7CisgICAgICAgYXJnICE9IE5VTExfVFJFRTsKICAgICAgICBhcmcgPSBUUkVFX0NI QUlOIChhcmcpLCArK2l4KQogICAgIGFyZ3NbaXhdID0gVFJFRV9WQUxVRSAoYXJnKTsKIApkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcGFyc2UvcHIxMDE0MDIuQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL3BhcnNlL3ByMTAxNDAyLkMKaW5kZXggNDJhOWNlM2FiNzguLjdjZjAyZGE1 NDAxIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9wYXJzZS9wcjEwMTQwMi5DCisr KyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3BhcnNlL3ByMTAxNDAyLkMKQEAgLTIyLDggKzIyLDgg QEAgdm9pZCBmKFQpOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgVD4KLXZvaWQgQTxUPjo6Zihjb25z dCBUKXt9IC8qIHsgZGctZXJyb3IgIm5vIGRlY2xhcmF0aW9uIG1hdGNoZXMiIH0gKi8KK3ZvaWQg QTxUPjo6Zihjb25zdCBUKXt9CiAKIHRlbXBsYXRlPD4KLXZvaWQgQTxpbnRbM10+OjpmKGNvbnN0 IGludCope30gLyogeyBkZy1lcnJvciAiZG9lcyBub3QgbWF0Y2ggYW55IHRlbXBsYXRlIGRlY2xh cmF0aW9uIiB9ICovCit2b2lkIEE8aW50WzNdPjo6Zihjb25zdCBpbnQqKXt9CiB9CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy90ZW1wbGF0ZS9mbnNwZWMyLkMgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy90ZW1wbGF0ZS9mbnNwZWMyLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjdhNGIxMDEyZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvdGVtcGxhdGUvZm5zcGVjMi5DCkBAIC0wLDAgKzEsOSBAQAordGVtcGxhdGUgPGNs YXNzIFQ+Cit2b2lkIGYoVCk7CisKK3RlbXBsYXRlPD4gdm9pZCBmKGludCwgLi4uKTsJLy8geyBk Zy1lcnJvciAibWF0Y2giIH0KKwordGVtcGxhdGUgPGNsYXNzIFQ+Cit2b2lkIGcoVCwgLi4uKTsK KwordGVtcGxhdGU8PiB2b2lkIGcoaW50KTsJCS8vIHsgZGctZXJyb3IgIm1hdGNoIiB9Ci0tIAoy LjI3LjAKCg== --------------LHugENyDoEHvaMBY9OpWh0Jf--