From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qv1-xf2e.google.com (mail-qv1-xf2e.google.com [IPv6:2607:f8b0:4864:20::f2e]) by sourceware.org (Postfix) with ESMTPS id 7231D3858D37 for ; Wed, 28 Sep 2022 20:51:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7231D3858D37 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=acm.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-qv1-xf2e.google.com with SMTP id u8so3273441qvv.9 for ; Wed, 28 Sep 2022 13:51:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :sender:from:to:cc:subject:date; bh=mYG8G6XQ8EADk+ulNMQkhkDS1GOWic1VDPnIVvYCQ74=; b=e0FH4tNWt1EOPMRZN10EcN7O/dlNbxjmL9He+rCINDl4KxtD2XygvAILJ+s7cQ9ebz aCiTZc5K7O/Co0ONoXHrYaphgKnZs8/FYMXsJgdUBJ00ir9xgktw8BKWwWTCojej9hZ/ g0YKlYQTU9Pb0RQG7/hvfV6OGw6KkG7vYumU30BGh27KTBMFCURC7XLRUel3ssz3X/op 0z7aytUBu61M4fdl1lYaxwRufppM7gncKqvWMkGcRssPZfsjFT5L48DKHwun9JfOwmZH sDcD1pJ3Ay708IJUI/DZWK8JoCCqdS4yXQecFEIVdsZMXNyWN/z3lEhHWWM6CEhE1lgT eUCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :sender:x-gm-message-state:from:to:cc:subject:date; bh=mYG8G6XQ8EADk+ulNMQkhkDS1GOWic1VDPnIVvYCQ74=; b=isTfW5IVmPbiHlVQ7gBj1I+cWaWhAsIvkADp438ssSzTCuekpfn2BYX5iOzQCKEOkg 2fb3kzim+lycLLpjL6UnPyxwydrwibIVCXfl5C8pY58z0OCmvLF78WfJU6txxmW0sRTj 6O/A4uKlnjLe1MfXWJhq4dbFrouTBcbJPd4R+qhTgjokJPrCU7/Pt4BjcGSxgNNKf+8E 0SKxkN3MF+oYrqwv2NUb1C0S6+UnnAIzJIMXd7oZysNe0rSem9/M6HfdzNozWH2cGWOW nuaWGyT19WKf7guEHKBi2h9tdx52qwETLHq825eaySgVRlgsx7SwgMegCjoZ7+LvddnJ jhfQ== X-Gm-Message-State: ACrzQf3VOa5MGD0S35SNqSDXBQXjJIOO4kzdPSkMQ4ZxJK23MhGjkxV4 4QRvGEXdSShQzNdJJwkOSuo= X-Google-Smtp-Source: AMsMyM7wftnKcNbdQ/m/0+2tkEHgY3rLJJ1lT7YJ5cLU/cJPRA3FLKgPqTsivC/+7eFYmy4Zqf7ZOQ== X-Received: by 2002:a05:6214:2306:b0:473:f77a:85a7 with SMTP id gc6-20020a056214230600b00473f77a85a7mr26884927qvb.106.1664398308679; Wed, 28 Sep 2022 13:51:48 -0700 (PDT) Received: from ?IPV6:2620:10d:c0a8:11c9::1035? ([2620:10d:c091:480::d460]) by smtp.googlemail.com with ESMTPSA id v32-20020a05622a18a000b0035cf2995ad8sm3971947qtc.51.2022.09.28.13.51.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 28 Sep 2022 13:51:48 -0700 (PDT) Sender: Nathan Sidwell Message-ID: <83fc7622-ac76-72e5-de0c-1d0929b133b0@acm.org> Date: Wed, 28 Sep 2022 16:51:47 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: [PATCH] c++ modules: ICE with class NTTP argument [PR100616] Content-Language: en-US To: Patrick Palka Cc: gcc-patches@gcc.gnu.org, jason@redhat.com References: <20220922182502.3218391-1-ppalka@redhat.com> <91a5a188-c4f2-39ff-fff4-8a667f515a19@acm.org> <0745ddf7-8e48-909b-d8e2-a9a1e4064cef@idea> <8728ddf0-ba58-60b3-9083-781901e350f9@idea> <9c72067f-c3ff-50d7-cd07-ca1eec819f82@idea> <5943173d-4a56-c759-d1c2-80f389723ff1@idea> From: Nathan Sidwell In-Reply-To: <5943173d-4a56-c759-d1c2-80f389723ff1@idea> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3040.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,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: On 9/28/22 10:42, Patrick Palka wrote: > On Tue, 27 Sep 2022, Nathan Sidwell wrote: > >> On 9/26/22 15:05, Patrick Palka wrote: >>> On Mon, 26 Sep 2022, Patrick Palka wrote: >>> >>>> On Mon, 26 Sep 2022, Nathan Sidwell wrote: >> >> >>> return decl; >>> @@ -29150,9 +29151,10 @@ finish_concept_definition (cp_expr id, tree init) >>> static tree >>> listify (tree arg) >>> { >>> - tree std_init_list = get_namespace_binding (std_node, >>> init_list_identifier); >>> + tree std_init_list = lookup_qualified_name (std_node, >>> init_list_identifier); >>> - if (!std_init_list || !DECL_CLASS_TEMPLATE_P (std_init_list)) >>> + if (std_init_list == error_mark_node >>> + || !DECL_CLASS_TEMPLATE_P (std_init_list)) >>> { >>> gcc_rich_location richloc (input_location); >>> maybe_add_include_fixit (&richloc, "", false); > > What do you think about this independent change to use > lookup_qualified_name instead of get_namespace_binding in listify so > that the lookup for std::initializer_list is import-aware, which seems > to fix PR102576? Yes, that looks right to me, thanks! (I think it'll also fix a potential future problem if we ever have: namespace std { inline namespace v2 { template class initializer_list {...}; }} > >>> diff --git a/gcc/testsuite/g++.dg/modules/pr100616_a.C >>> b/gcc/testsuite/g++.dg/modules/pr100616_a.C >>> new file mode 100644 >>> index 00000000000..788af2eb533 >>> --- /dev/null >>> +++ b/gcc/testsuite/g++.dg/modules/pr100616_a.C >>> @@ -0,0 +1,8 @@ >>> +// PR c++/100616 >>> +// { dg-additional-options "-std=c++20 -fmodules-ts" } >>> +// { dg-module-cmi pr100616 } >>> +export module pr100616; >>> + >>> +template struct C { }; >>> +struct A { }; >>> +C c1; >>> diff --git a/gcc/testsuite/g++.dg/modules/pr100616_b.C >>> b/gcc/testsuite/g++.dg/modules/pr100616_b.C >>> new file mode 100644 >>> index 00000000000..fc89cd08ac5 >>> --- /dev/null >>> +++ b/gcc/testsuite/g++.dg/modules/pr100616_b.C >>> @@ -0,0 +1,8 @@ >>> +// PR c++/100616 >>> +// { dg-additional-options "-std=c++20 -fmodules-ts" } >>> +module pr100616; >>> + >>> +C c2; >>> + >>> +using type = decltype(c1); >>> +using type = decltype(c2); >>> diff --git a/gcc/testsuite/g++.dg/modules/pr102576_a.H >>> b/gcc/testsuite/g++.dg/modules/pr102576_a.H >>> new file mode 100644 >>> index 00000000000..87ba9b52031 >>> --- /dev/null >>> +++ b/gcc/testsuite/g++.dg/modules/pr102576_a.H >>> @@ -0,0 +1,5 @@ >>> +// PR c++/102576 >>> +// { dg-additional-options -fmodule-header } >>> +// { dg-module-cmi {} } >>> + >>> +#include >>> diff --git a/gcc/testsuite/g++.dg/modules/pr102576_b.C >>> b/gcc/testsuite/g++.dg/modules/pr102576_b.C >>> new file mode 100644 >>> index 00000000000..10251ed5304 >>> --- /dev/null >>> +++ b/gcc/testsuite/g++.dg/modules/pr102576_b.C >>> @@ -0,0 +1,9 @@ >>> +// PR c++/102576 >>> +// { dg-additional-options -fmodules-ts } >>> + >>> +import "pr102576_a.H"; >>> + >>> +int main() { >>> + for (int i : {1, 2, 3}) >>> + ; >>> +} >> >> -- >> Nathan Sidwell >> -- Nathan Sidwell