/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 May 2013 09:33:29 +0000 (09:33 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 May 2013 09:33:29 +0000 (09:33 +0000)
2013-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/57211
* method.c (defaultable_fn_check): Avoid do_warn_unused_parameter
warnings about defaulted functions.

/testsuite
2013-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/57211
* g++.dg/cpp0x/Wunused-parm.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199189 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/method.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C [new file with mode: 0644]

index b7b87cb..47cb6d3 100644 (file)
@@ -1,3 +1,9 @@
+2013-05-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/57211
+       * method.c (defaultable_fn_check): Avoid do_warn_unused_parameter
+       warnings about defaulted functions.
+
 2013-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * call.c (build_conditional_expr_1): Add location_t parameter.
index 0d779a0..f314d0d 100644 (file)
@@ -1864,13 +1864,19 @@ defaultable_fn_check (tree fn)
     }
   else
     {
-      tree t = FUNCTION_FIRST_USER_PARMTYPE (fn);
-      for (; t && t != void_list_node; t = TREE_CHAIN (t))
+      for (tree t = FUNCTION_FIRST_USER_PARMTYPE (fn);
+          t && t != void_list_node; t = TREE_CHAIN (t))
        if (TREE_PURPOSE (t))
          {
            error ("defaulted function %q+D with default argument", fn);
            break;
          }
+
+      /* Avoid do_warn_unused_parameter warnings.  */
+      for (tree p = FUNCTION_FIRST_USER_PARM (fn); p; p = DECL_CHAIN (p))
+       if (DECL_NAME (p))
+         TREE_NO_WARNING (p) = 1;
+
       if (TYPE_BEING_DEFINED (DECL_CONTEXT (fn)))
        /* Defer checking.  */;
       else if (!processing_template_decl)
index 29f1b7f..fc2a2f3 100644 (file)
@@ -1,3 +1,8 @@
+2013-05-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/57211
+       * g++.dg/cpp0x/Wunused-parm.C: New.
+
 2013-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * g++.dg/cpp0x/explicit3.C: Add column in dg-error strings.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C b/gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
new file mode 100644 (file)
index 0000000..7f6c6ff
--- /dev/null
@@ -0,0 +1,23 @@
+// PR c++/57211
+// { dg-options "-std=c++11 -Wunused-parameter" }
+
+template <class T> T&& move(T&);
+
+struct A
+{
+  struct B
+  {
+    B& operator=(B&&);
+  };
+
+  B f;
+
+  A& operator=(A&& p) = default;
+};
+
+int main()
+{
+  A a;
+  A b;
+  b = move(a);
+}