• Linus Torvalds's avatar
    Revert "Makefile.extrawarn: re-enable -Wformat for clang" · 21f9c8a1
    Linus Torvalds authored
    This reverts commit 258fafcd.
    
    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: default avatarSudip Mukherjee (Codethink) <sudipm.mukherjee@gmail.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    21f9c8a1
Makefile.extrawarn 2.99 KB