This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]