[PATCH] D44883: [Sema] Extend -Wself-assign and -Wself-assign-field to warn on overloaded self-assignment (classes)

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 2 08:11:03 PDT 2018


On Mon, Apr 2, 2018 at 11:05 AM, Roman Lebedev via Phabricator via
cfe-commits <cfe-commits at lists.llvm.org> wrote:

> lebedev.ri added a comment.
>
> In https://reviews.llvm.org/D44883#1054326, @thakis wrote:
>
> > In https://reviews.llvm.org/D44883#1048751, @dblaikie wrote:
> >
> > > Historically Clang's policy on warnings was, I think, much more
> > >  conservative than it seems to be today. There was a strong desire not
> to
> > >  implement off-by-default warnings, and to have warnings with an
> > >  exceptionally low false-positive rate - maybe the user-defined
> operator
> > >  detection was either assumed to, or demonstrated to, have a
> sufficiently
> > >  high false positive rate to not meet that high bar.
> >
> >
> > This is still the case. For a new warning, you should evaluate some
> large open-source codebase and measure true positive and false positive
> rate and post the numbers here.
>
>
> I did run it on stage-2 of LLVM itself. The only 'false-positives' so far
> are already present in trunk:
> https://godbolt.org/g/SXc4Wd
>
>   void test_int () {
>       int b;
>       static_assert(noexcept(b &= b), "" );
>   }
>   void test_byte () {
>       std::byte b;
>       static_assert(noexcept(b &= (std::byte &)b), "" );
>   }
>
>   <source>:4:30: warning: explicitly assigning value of variable of type
> 'int' to itself [-Wself-assign]
>
>       static_assert(noexcept(b &= b), "" );
>
>                              ~ ^  ~
>
> Should it really warn when in unevaluated context?
> Dunno, but trunk already does that. Should that be changed?
>
> Which other large codebase do you want me to evaluate, so we can talk
> facts?
>

Either of OpenOffice, Firefox, or Chromium have been used in the past for
warning evaluation.


> >> (as for the flag splitting - that was sometimes done if the new variant
> of
> >>  a flag had enough bug-finding power that an existing codebase using the
> >>  existing flag behavior would need significant cleanup - by having the
> new
> >>  functionality under another flag name, existing codebases upgrading to
> a
> >>  newer compiler wouldn't be forced to either do all that cleanup
> up-front or
> >>  disable the flag & risk regressions... )
>
>
>
>
> Repository:
>   rC Clang
>
> https://reviews.llvm.org/D44883
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180402/cd86e0bf/attachment.html>


More information about the cfe-commits mailing list