https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84973

--- Comment #5 from Alexandre Oliva <aoliva at gcc dot gnu.org> ---
Author: aoliva
Date: Wed Mar 28 05:05:14 2018
New Revision: 258914

URL: https://gcc.gnu.org/viewcvs?rev=258914&root=gcc&view=rev
Log:
[PR c++/84973] don't defer output of uninstantiated templates

When an anon struct gets a name through a typedef, we reset its
linkage and that of its members.  Member functions may get vague
linkage, which schedules them for deferred output, but we don't want
to add them to the queue if they're uninstantiated templates,
e.g. because the enclosing function is a template.  They will be added
as needed when the enclosing template is instantiated.


for  gcc/cp/ChangeLog

        PR c++/84973
        * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
        templates.

for  gcc/testsuite/ChangeLog

        PR c++/84973
        * g++.dg/template/pr84973.C: New.
        * g++.dg/template/pr84973-2.C: New.
        * g++.dg/template/pr84973-3.C: New.

Added:
    trunk/gcc/testsuite/g++.dg/template/pr84973-2.C
    trunk/gcc/testsuite/g++.dg/template/pr84973-3.C
    trunk/gcc/testsuite/g++.dg/template/pr84973.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/decl2.c
    trunk/gcc/testsuite/ChangeLog

Reply via email to