mizvekov added inline comments.

================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/bugprone/sizeof-expression.cpp:236-238
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 
'sizeof(A*)'; pointer to aggregate
   sum += sizeof(PMyStruct);
-  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious usage of 
'sizeof(A*)'; pointer to aggregate
----------------
chrish_ericsson_atx wrote:
> njames93 wrote:
> > mizvekov wrote:
> > > Is this change really desirable, or should we put a FIXME here?
> > Not warning on these cases seems like a pretty big red flag, especially the 
> > `MyStruct *`.
> Thank you for your comment!  I'm not sure I fully agree that this is a red 
> flag.  I'm inclined to think that whether or not there should be a warning on 
> `MyStruct *` or `PMyStruct` is a pretty subjective.  These are both very 
> common idioms, and are meaningful.  I do appreciate the perspective that 
> `MyStruct *` is just one character different from `MyStruct`, and as such, it 
> might be a typo to ask for sizeof the pointer, when you really wanted sizeof 
> the struct.  But the counter-argument (accidentally asking for sizeof the 
> struct when you really wanted the pointer size) is just as valid-- and the 
> checker obviously cannot warn in that case.   
> 
> I am perfectly fine with kicking the can down the road a bit by replacing the 
> discarded `// CHECK-MESSAGES` directive with a `// FIXME`, as @mizvekov 
> suggested.  I expect that when someone circles back to really deeply 
> reconsider the semantics of this checker, there will be a number of changes 
> (other existing warnings dropped, warnings for new and missed cases added, 
> much better sync between C and C++, as well as intentional consideration of 
> things like __typeof__ (in it's various forms) and decltype, rather than the 
> haphazard coarse-grain matching that seems to be going on now.
I agree with this patch only in so far that:

* This is effectively a partial revert of the changes made in 
https://reviews.llvm.org/rG15f3cd6bfc670ba6106184a903eb04be059e5977
* The checker was pretty much buggy to begin with.
* That change significantly increased the amount of patterns we would accept, 
but at the same time the existing tests did not pick that up and this was not 
carefully considered.
* It seems unreasonable that there is effectively no way to shut this warning 
up per site, except by a NOLINT directive.

If the amount of false positives is so high now that this check is unusable, 
then this is just a question of reverting to a less broken state temporarily.

But otherwise we can't leave it in the reverted state either. Without that 
change to use the canonical type or something similar, there is no reason to 
suppose any of these test cases would work at all as clang evolves and we 
improve the quality of implementation wrt type sugar retention.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D131926/new/

https://reviews.llvm.org/D131926

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to