karka228 wrote:

I have started to implement defining the -Wformat-signedness option config in 
clang/include/clang/Basic/DiagnosticSemaKinds.td as suggested originally by 
@hazohelet and I agree that the implementation is a lot cleaner that way.
However before finishing implementing that I think we need to conclude what 
level of gcc compatibility that we aim for in clang.

Below I list the characteristics of -Wformat-signedness that I have seen by 
testing it out in gcc and reading the gcc documentation (I have not inspected 
the gcc source code):

1. The option -Wformat-signedness is default off.
2. The -Wformat-signedness warnings are not enabled alone by the -Wformat 
option.
3. The -Wformat-signedness warnings are not enabled alone by the 
-Wformat-signedness option.
4. The -Wformat-signedness warnings are enabled by the option -Wformat together 
with the option -Wformat-signedness.
5. Parts of the -Wformat-signedness warnings (regarding scanf) are enabled by 
the options -Wformat together with the option -pedantic.
6. Warnings produced by -Wformat-signedness is reported as a -Wformat warnings 
(e.g "warning: format ‘%u’ expects argument of type ‘unsigned int’, but 
argument 2 has type ‘int’ [-Wformat=]"
7. Warnings produced by -Wformat-signedness can be suppressed by "#pragma GCC 
diagnostic ignored -Wformat"

Which of the above points are important for us to follow in clang to get a 
reasonable gcc compatibility?
To me I think point 1, 2 and maybe 7 is the most important to follow.

https://github.com/llvm/llvm-project/pull/74440
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to