aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-05-22 09:33:29 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-05-22 09:33:29 +0000
commit2ac2f83d0ad51d386ecec48f12b685a2d244cdff (patch)
tree3ac688701c72fedb333c97007c7eb55b4f5d32e5
parent98409b518574b9b27d6879b8ade2327fe4a44fd2 (diff)
downloadgcc-2ac2f83d0ad51d386ecec48f12b685a2d244cdff.zip
gcc-2ac2f83d0ad51d386ecec48f12b685a2d244cdff.tar.gz
gcc-2ac2f83d0ad51d386ecec48f12b685a2d244cdff.tar.bz2
re PR c++/57211 (wrong line indicated in warning for synthesized method)
/cp 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. From-SVN: r199189
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/method.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C23
4 files changed, 42 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b7b87cb..47cb6d3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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.
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 0d779a0..f314d0d 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -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)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 29f1b7f..fc2a2f3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..7f6c6ff
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
@@ -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);
+}