aaron.ballman added inline comments.

================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:7006
+def warn_typecheck_comparison_of_function_pointers : Warning<
+  "comparison of function pointers (%0 and %1)">,
+  InGroup<CompareFunctionPointers>, DefaultIgnore;
----------------
adriandole wrote:
> aaron.ballman wrote:
> > cjdb wrote:
> > > This diagnostic feels very bare bones, and doesn't explain why the user 
> > > should care. It would be good to rephrase the message so that it can 
> > > incorporate some kind of reason too.
> > Agreed -- diagnostic wording is usually trying to tell the user what they 
> > did wrong to guide them how to fix it, but this reads more like the 
> > diagnostic explains what the code does. This one will be especially 
> > interesting because people would naturally expect that comparison to work 
> > per the standard. And if enabling ICF breaks that then ICF is 
> > non-conforming because it makes valid code silently invalid. I think this 
> > is an ICF bug (it may still be worth warning users about though because you 
> > can use newer Clang with an older lld and hit the issue even if lld 
> > addresses this issue).
> > 
> > CC @lhames @sbc100 @ruiu in to try to scare up an lld code owner to see if 
> > this is known and if there's something that can be done on the lld side to 
> > not break valid code.
> There's already an ICF option that doesn't break valid code: `-icf=safe`. 
> Only if you explicitly decide that you don't care about the results of 
> function pointer comparisons would you use `-icf=all`, which enables more 
> code folding to be done than the safe option.
Ohhh interesting, so it's probably known that `-icf=all` will break code 
because it's not conforming and thus isn't an lld bug at all. Do (most?) other 
linkers also have the same functionality as `-icf=all`? I'm trying to 
understand whether this should be added to clang at all as it seems like it's a 
warning for a very particular usage pattern (a specific linker with a specific 
option ), which make it more reasonable for clang-tidy instead of the compiler.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D141310

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

Reply via email to