diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2013-05-22 09:33:29 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-05-22 09:33:29 +0000 |
commit | 2ac2f83d0ad51d386ecec48f12b685a2d244cdff (patch) | |
tree | 3ac688701c72fedb333c97007c7eb55b4f5d32e5 | |
parent | 98409b518574b9b27d6879b8ade2327fe4a44fd2 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/method.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C | 23 |
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); +} |