diff mbox

C++ PATCH for c++/78749, friend in anonymous namespace

Message ID CADzB+2nm=6qLsmSUygUiS5mhcvaQwTSVr=B1hhBY2AN_ytRzWQ@mail.gmail.com
State New
Headers show

Commit Message

Jason Merrill Dec. 21, 2016, 6:28 p.m. UTC
We shouldn't complain about friend temploids that we just haven't
instantiated yet.

Tested x86_64-pc-linux-gnu, applying to trunk.
commit a5742e86f3f8e1a2877b1dcf49403aaa8e7d0b86
Author: Jason Merrill <jason@redhat.com>
Date:   Mon Dec 19 16:22:25 2016 -0500

            PR c++/78749 - friend in anonymous namespace
    
            * decl.c (wrapup_globals_for_namespace): Don't complain about friend
            pseudo-template instantiations.
diff mbox

Patch

diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index e83b542..2954160 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -926,6 +926,7 @@  wrapup_globals_for_namespace (tree name_space, void* data ATTRIBUTE_UNUSED)
 	    && DECL_EXTERNAL (decl)
 	    && !TREE_PUBLIC (decl)
 	    && !DECL_ARTIFICIAL (decl)
+	    && !DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION (decl)
 	    && !TREE_NO_WARNING (decl))
 	  {
 	    warning_at (DECL_SOURCE_LOCATION (decl),
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-function3.C b/gcc/testsuite/g++.dg/warn/Wunused-function3.C
new file mode 100644
index 0000000..94c9025
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-function3.C
@@ -0,0 +1,11 @@ 
+// { dg-options -Wunused-function }
+
+namespace
+{
+  template <class T> struct A
+  {
+    friend void f(A) { }
+  };
+
+  A<int> a;
+}