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

Reply via email to