mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Revert "Makefile.extrawarn: re-enable -Wformat for clang"
This reverts commit 258fafcd06.
The clang -Wformat warning is terminally broken, and the clang people
can't seem to get their act together.
This test program causes a warning with clang:
	#include <stdio.h>
	int main(int argc, char **argv)
	{
		printf("%hhu\n", 'a');
	}
resulting in
  t.c:5:19: warning: format specifies type 'unsigned char' but the argument has type 'int' [-Wformat]
          printf("%hhu\n", 'a');
                  ~~~~     ^~~
                  %d
and apparently clang people consider that a feature, because they don't
want to face the reality of how either C character constants, C
arithmetic, and C varargs functions work.
The rest of the world just shakes their head at that kind of
incompetence, and turns off -Wformat for clang again.
And no, the "you should use a pointless cast to shut this up" is not a
valid answer.  That warning should not exist in the first place, or at
least be optinal with some "-Wformat-me-harder" kind of option.
[ Admittedly, there's also very little reason to *ever* use '%hh[ud]' in
  C, but what little reason there is is entirely about 'I want to see
  only the low 8 bits of the argument'. So I would suggest nobody ever
  use that format in the first place, but if they do, the clang
  behavious is simply always wrong. Because '%hhu' takes an 'int'. It's
  that simple. ]
Reported-by: Sudip Mukherjee (Codethink) <sudipm.mukherjee@gmail.com>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									ffcf9c5700
								
							
						
					
					
						commit
						21f9c8a13b
					
				
					 1 changed files with 1 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -47,6 +47,7 @@ else
 | 
			
		|||
 | 
			
		||||
ifdef CONFIG_CC_IS_CLANG
 | 
			
		||||
KBUILD_CFLAGS += -Wno-initializer-overrides
 | 
			
		||||
KBUILD_CFLAGS += -Wno-format
 | 
			
		||||
KBUILD_CFLAGS += -Wno-sign-compare
 | 
			
		||||
KBUILD_CFLAGS += -Wno-format-zero-length
 | 
			
		||||
KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue