This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] fix c++/18016 - warn about self-initialization in constructor init-list
On 05/23/2011 04:20 AM, Jonathan Wakely wrote:
I still think this warning shouldn't be tied to -Winit-self. That
isn't included in -Wall or -Wextra, and it implies we're saying that a
self-referencing mem-initializer is a GNU extension to silence a
warning, when I think it's always a mistake and never done
intentionally.
I agree, but I think the answer to that is to enable -Winit-self with
-Wextra in C++ mode.
Thanks, I've attached what I committed. I only checked
warn_init_self, not both warn_uninitialized&& warn_init_self, I think
that's right.
I think so.
I've also just noticed that my change doesn't catch references which
are initialized with themselves. I won't try to fix that now, but
would that be done by checking for INDIRECT_REF?
Yes, or you can use REFERENCE_REF_P.
I also had some thoughts about making init-self work for class types e.g.
std::string s = s;
Would checking if the copy constructor's parameter is *this be a
simple way to catch that?
Well, in this snippet there's no *this involved, the parameter would be
the decl being initialized.
Jason