https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81417
Bug ID: 81417 Summary: -Wsign-compare should print types being compared Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: egall at gwmail dot gwu.edu Target Milestone: --- Host: i386-apple-darwin9.8.0 Target: i386-apple-darwin9.8.0 Build: i386-apple-darwin9.8.0 Simple testcase: $ cat Wsign_compare.c /* { dg-do compile } */ int foo(signed int a, unsigned int b) { return (a < b); } When compiled with gcc, it says: $ /usr/local/bin/gcc -c -Wsign-compare Wsign_compare.c Wsign_compare.c: In function ‘foo’: Wsign_compare.c:5:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] return (a < b); ^ However, when compiled with clang, it gives more information: $ /sw/opt/llvm-3.1/bin/clang -c -Wsign-compare Wsign_compare.c Wsign_compare.c:5:12: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare] return (a < b); ~ ^ ~ 1 warning generated. In such a small file like this it might not matter much, but in bigger files where the variables being compared are very far away from their declarations, it can be hard to remember what types they are. Having the compiler remind me of the types being compared would be helpful when deciding how to silence warnings like these. Version info: $ /usr/local/bin/gcc -v Using built-in specs. COLLECT_GCC=/usr/local/bin/gcc COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i386-apple-darwin9.8.0/8.0.0/lto-wrapper Target: i386-apple-darwin9.8.0 Configured with: ../configure --disable-werror --disable-werror-always --enable-languages=c,c++,lto,objc,obj-c++ --enable-stage1-checking=release,rtl -C --with-system-libunwind --enable-secureplt --enable-frame-pointer --enable-debug --with-isl --disable-host-shared --enable-maintainer-mode --disable-default-pie --with-ld64 --without-pic --enable-target-optspace CC=/usr/local/bin/gcc CXX=/usr/local/bin/g++ AUTOCONF=/usr/local/bin/autoconf AUTOHEADER=/usr/local/bin/autoheader AUTORECONF=/usr/local/bin/autoreconf AUTOM4TE=/usr/local/bin/autom4te AUTOSCAN=/usr/local/bin/autoscan AUTOUPDATE=/usr/local/bin/autoupdate IFNAMES=/usr/local/bin/ifnames Thread model: posix gcc version 8.0.0 20170702 (experimental) (GCC)