From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1955 invoked by alias); 28 Nov 2017 18:10:09 -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 1946 invoked by uid 89); 28 Nov 2017 18:10:08 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.5 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,KB_WAM_FROM_NAME_SINGLEWORD,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 spammy=Hx-languages-length:4173, HX-Received:10.36.162.65 X-HELO: mail-it0-f65.google.com Received: from mail-it0-f65.google.com (HELO mail-it0-f65.google.com) (209.85.214.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 28 Nov 2017 18:10:07 +0000 Received: by mail-it0-f65.google.com with SMTP id m11so23860014iti.1 for ; Tue, 28 Nov 2017 10:10:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=p+bXTVHy95wCGotIBSkva04s5+RahwekKBkBVhqKEjg=; b=qCffUFeK2CQEWHUSMAeFIeH/b1ht1XDnHCUw+06K0ilsyJwj7qGCMYYnSow2WGDgP+ b/X2giVCebv9ALNqwv5IVngJUNZLAsDwhfJYXlpc2BqGx4pDbgU5mgmsptdvUZdhO7OG HamVQVDop+UldwETKQ/3NH5uz5shxCWUkevJ64SXlmxdSSzFTVD5lJxiKkbPHRziXeD1 QdeYqKI2ms0JiCtB0Hk20LQ0p0QJ6vwLKtzI1LAq4rFSEjQ21RbXIBVJL3NwmtbbbuzE RtX+V4uIxbjJQHgYt3zECScaaQws5Jo1Q0Tcg/Ni6wBKG0HhNOCnrGkQsFTQE/PiWmKB k9Vg== X-Gm-Message-State: AJaThX69Tg6V+2T9NX93EcnO6dSkLa4knAnkzGBDEuFCvs563oiu9Fxr Ww+Inl4v+HfYJashv6l4DRNXTU3t7M1pC8yhoqgWwZAy X-Google-Smtp-Source: AGs4zMYPktY/exsKmOqH4FV+d5YAim+xVt+sInUdleUGf8mFKKOUlTu6QzaHpUrW8g9YwYqCB4ZufbzJS1JyaeiX5is= X-Received: by 10.36.162.65 with SMTP id o1mr3626560iti.85.1511892605322; Tue, 28 Nov 2017 10:10:05 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.171.134 with HTTP; Tue, 28 Nov 2017 10:09:44 -0800 (PST) In-Reply-To: References: From: Jason Merrill Date: Tue, 28 Nov 2017 18:28:00 -0000 Message-ID: Subject: Re: C++ PATCH to primary_template_instantiation_p To: Maxim Kuvyrkov Cc: gcc-patches List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2017-11/txt/msg02453.txt.bz2 Fixed, thanks. On Tue, Nov 28, 2017 at 10:49 AM, Maxim Kuvyrkov wrote: > >> On Nov 28, 2017, at 12:29 AM, Jason Merrill wrote: >> >> All the uses of primary_template_instantiation_p actually want to >> query whether the entity in question is a specialization of the >> template, not whether it's an instantiation or explicit >> specialization. >> >> Tested x86_64-pc-linux-gnu, applying to trunk. >> > > Hi Jason, > > I get the following failure with the new test on x86_64-linux-gnu and aar= ch64-linux-gnu: > >> --- /dev/null >> +++ b/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C >> @@ -0,0 +1,27 @@ >> +// PR c++/46831 >> +// { dg-do compile { target c++11 } } >> +// { dg-options "" } >> + >> +struct B { }; >> +struct D : B { }; >> +struct A { >> + template operator D&(); // { dg-message "templat= e conversion" } >> + operator long(); >> +}; >> + >> +template <> A::operator D&(); > > "Template conversion" warning is triggered on this line, rather than abov= e. > >> + >> +void f(long); >> +void f(B&); >> + >> +struct A2 { >> + template operator B&(); >> +}; >> + >> +void f2(const B&); >> + >> +int main() { >> + f(A()); >> + f2(A2()); >> + f2(A()); // { dg-error "" } >> +} >> > > Would you please take a look? > > =3D=3D=3D > spawn -ignore SIGHUP /home/tcwg-buildslave/workspace/tcwg-buildfarm/tcwg-= x86_64-build/_build/builds/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gn= u/gcc.git~master-stage2/gcc/testsuite/g++5/../../xg++ -B/home/tcwg-buildsla= ve/workspace/tcwg-buildfarm/tcwg-x86_64-build/_build/builds/x86_64-unknown-= linux-gnu/x86_64-unknown-linux-gnu/gcc.git~master-stage2/gcc/testsuite/g++5= /../../ /home/tcwg-buildslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/sn= apshots/gcc.git~master/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C -fno-diag= nostics-show-caret -fdiagnostics-color=3Dnever -nostdinc++ -I/home/tcwg-bui= ldslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/_build/builds/x86_64-unk= nown-linux-gnu/x86_64-unknown-linux-gnu/gcc.git~master-stage2/x86_64-unknow= n-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu -I/home/tcwg-buil= dslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/_build/builds/x86_64-unkn= own-linux-gnu/x86_64-unknown-linux-gnu/gcc.git~master-stage2/x86_64-unknown= -linux-gnu/libstdc++-v3/include -I/home/tcwg-buildslave/workspace/tcwg-buil= dfarm/tcwg-x86_64-build/snapshots/gcc.git~master/libstdc++-v3/libsupc++ -I/= home/tcwg-buildslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/snapshots/g= cc.git~master/libstdc++-v3/include/backward -I/home/tcwg-buildslave/workspa= ce/tcwg-buildfarm/tcwg-x86_64-build/snapshots/gcc.git~master/libstdc++-v3/t= estsuite/util -fmessage-length=3D0 -std=3Dgnu++11 -S -o fntmpdefarg2a.s > /home/tcwg-buildslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/snapshot= s/gcc.git~master/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C: In function 'i= nt main()': > /home/tcwg-buildslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/snapshot= s/gcc.git~master/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C:26:6: error: in= valid user-defined conversion from 'A' to 'const B&' [-fpermissive] > /home/tcwg-buildslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/snapshot= s/gcc.git~master/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C:12:13: note: ca= ndidate is: 'A::operator D&() [with T =3D void]' > /home/tcwg-buildslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/snapshot= s/gcc.git~master/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C:12:13: note: = conversion from return type 'D&' of template conversion function specializa= tion to 'const B&' is not an exact match > /home/tcwg-buildslave/workspace/tcwg-buildfarm/tcwg-x86_64-build/snapshot= s/gcc.git~master/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg2a.C:21:6: note: i= nitializing argument 1 of 'void f2(const B&)' > compiler exited with status 1 > FAIL: g++.dg/cpp0x/fntmpdefarg2a.C -std=3Dgnu++11 (test for warnings, l= ine 8) > PASS: g++.dg/cpp0x/fntmpdefarg2a.C -std=3Dgnu++11 (test for errors, lin= e 26) > PASS: g++.dg/cpp0x/fntmpdefarg2a.C -std=3Dgnu++11 (test for excess error= s) > =3D=3D=3D > > Regards, > > -- > Maxim Kuvyrkov > www.linaro.org > > >