aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/method.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2013-05-20 13:01:16 -0400
committerJason Merrill <jason@gcc.gnu.org>2013-05-20 13:01:16 -0400
commit32bfcf80647d3fd3a658c7032a5aebe767341893 (patch)
treea77eab61162ca3bdde85d7a9b12497eb29a58625 /gcc/cp/method.c
parent9f0bdc935f2199a2247b9d30858a9262d1a6bfa8 (diff)
downloadgcc-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.c3
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",