]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: extend -Wself-move for mem-init-list [PR109396]
authorMarek Polacek <polacek@redhat.com>
Thu, 23 May 2024 19:49:42 +0000 (15:49 -0400)
committerMarek Polacek <polacek@redhat.com>
Tue, 28 May 2024 19:03:44 +0000 (15:03 -0400)
commitefaaae49b307fcc7e771518da3edae49f92c19db
treeea97b2f94b7833ce721aae9ab08a18f018078fbb
parent5ada486079d6aa20c64985a20681573f4ac1c86e
c++: extend -Wself-move for mem-init-list [PR109396]

We already warn for:

  x = std::move (x);

which triggers:

  warning: moving 'x' of type 'int' to itself [-Wself-move]

but bug 109396 reports that this doesn't work for a member-initializer-list:

  X() : x(std::move (x))

so this patch amends that.

PR c++/109396

gcc/cp/ChangeLog:

* cp-tree.h (maybe_warn_self_move): Declare.
* init.cc (perform_member_init): Call maybe_warn_self_move.
* typeck.cc (maybe_warn_self_move): No longer static.  Change the
return type to bool.  Also warn when called from
a member-initializer-list.  Drop the inform call.

gcc/testsuite/ChangeLog:

* g++.dg/warn/Wself-move2.C: New test.
gcc/cp/cp-tree.h
gcc/cp/init.cc
gcc/cp/typeck.cc
gcc/testsuite/g++.dg/warn/Wself-move2.C [new file with mode: 0644]