http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52732
Bug #: 52732 Summary: __builtin_bswapXX doesn't work with printf format Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: hjl.to...@gmail.com Somehow, GCC gets very confused: [hjl@gnu-6 gcc]$ cat /tmp/f.c #include <stdio.h> void foo (int x, long y) { printf ("%u\n", __builtin_bswap32 (x)); printf ("%u\n", x); printf ("%lu\n", __builtin_bswap64 (x)); printf ("%lu\n", y); } [hjl@gnu-6 gcc]$ ./xgcc -B./ -Wall -c /tmp/f.c /tmp/f.c: In function ‘foo’: /tmp/f.c:6:3: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘unsigned int’ [-Wformat] /tmp/f.c:8:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘long unsigned int’ [-Wformat] [hjl@gnu-6 gcc]$