diff options
author | Jason Merrill <jason@redhat.com> | 2013-05-20 13:01:16 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2013-05-20 13:01:16 -0400 |
commit | 32bfcf80647d3fd3a658c7032a5aebe767341893 (patch) | |
tree | a77eab61162ca3bdde85d7a9b12497eb29a58625 /gcc/cp/method.c | |
parent | 9f0bdc935f2199a2247b9d30858a9262d1a6bfa8 (diff) | |
download | gcc-32bfcf80647d3fd3a658c7032a5aebe767341893.zip gcc-32bfcf80647d3fd3a658c7032a5aebe767341893.tar.gz gcc-32bfcf80647d3fd3a658c7032a5aebe767341893.tar.bz2 |
re PR c++/57319 (bogus "defaulted move assignment for ... calls a non-trivial move assignment operator for virtual base ...")
PR c++/57319
* class.c (vbase_has_user_provided_move_assign): New.
* method.c (synthesized_method_walk): Check it.
* cp-tree.h: Declare it.
From-SVN: r199114
Diffstat (limited to 'gcc/cp/method.c')
-rw-r--r-- | gcc/cp/method.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 801b3a5..0d779a0 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1353,7 +1353,8 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p, if (diag && assign_p && move_p && BINFO_VIRTUAL_P (base_binfo) && rval && TREE_CODE (rval) == FUNCTION_DECL - && move_fn_p (rval) && !trivial_fn_p (rval)) + && move_fn_p (rval) && !trivial_fn_p (rval) + && vbase_has_user_provided_move_assign (basetype)) warning (OPT_Wvirtual_move_assign, "defaulted move assignment for %qT calls a non-trivial " "move assignment operator for virtual base %qT", |