https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110998
Bug ID: 110998 Summary: Inconsistent -Wformat warnings issued for %I64d Product: gcc Version: 13.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: syeberman at gmail dot com Target Milestone: --- Created attachment 55727 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55727&action=edit Preprocessed file GCC reports inconsistent warnings with -Wformat where the Windows-only %I64d format is used. It is understood that before Windows supported %lld, the correct specifier to use for long long was %I64d. As such, the following code should compile without error: fprintf(stdout, "%I64d\n", 1LL); However, on GCC 13.2.0 on Windows (specifically, the WinLibs build available at https://winlibs.com), the following error is issued: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long long int' [-Wformat=] What is interesting, however, is that if the LL suffix is removed, the exact opposite error is issued: fprintf(stdout, "%I64d\n", 1); warning: format '%I64d' expects argument of type 'long long int', but argument 3 has type 'int' [-Wformat=] Minimal testcase ---------------- #include <stdio.h> int main(int argc, char **argv) { fprintf(stdout, "%I64d\n", 1LL); fprintf(stdout, "%I64d\n", 1); } Command line ------------ C:\MinGW\winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1\mingw32\bin\gcc.exe -v -save-temps -Wformat testcase.c Output ------ Using built-in specs. COLLECT_GCC=C:\MinGW\winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1\mingw32\bin\gcc.exe COLLECT_LTO_WRAPPER=C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../libexec/gcc/i686-w64-mingw32/13.2.0/lto-wrapper.exe OFFLOAD_TARGET_NAMES=nvptx-none Target: i686-w64-mingw32 Configured with: ../configure --prefix=/R/winlibs32ucrt_stage/inst_gcc-13.2.0/share/gcc --build=i686-w64-mingw32 --host=i686-w64-mingw32 --enable-offload-targets=nvptx-none --with-pkgversion='MinGW-W64 i686-ucrt-posix-dwarf, built by Brecht Sanders' --with-tune=generic --enable-checking=release --enable-threads=posix --with-dwarf2 --disable-sjlj-exceptions --disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap --enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath --disable-libstdcxx-debug --disable-version-specific-runtime-libs --with-stabs --disable-symvers --enable-languages=c,c++,fortran,lto,objc,obj-c++ --disable-gold --disable-nls --disable-stage1-checking --disable-win32-registry --disable-multilib --enable-ld --enable-libquadmath --enable-libada --enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string --enable-libgomp --enable-graphite --enable-mingw-wildcard --enable-libstdcxx-time --enable-libstdcxx-pch --with-mpc=/d/Prog/winlibs32ucrt_stage/custombuilt --with-mpfr=/d/Prog/winlibs32ucrt_stage/custombuilt --with-gmp=/d/Prog/winlibs32ucrt_stage/custombuilt --with-isl=/d/Prog/winlibs32ucrt_stage/custombuilt --enable-large-address-aware --disable-libstdcxx-backtrace --enable-install-libiberty --enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto --enable-clocale=generic --with-libiconv --with-system-zlib --with-build-sysroot=/R/winlibs32ucrt_stage/gcc-13.2.0/build_mingw/mingw-w64 CFLAGS='-I/d/Prog/winlibs32ucrt_stage/custombuilt/include/libdl-win32 -Wno-int-conversion -march=pentium4 -mtune=generic -O2 ' CXXFLAGS='-Wno-int-conversion -march=pentium4 -mtune=generic -O2 ' LDFLAGS='-pthread -Wl,--no-insert-timestamp -Wl,--dynamicbase -Wl,--nxcompat -Wl,--tsaware' Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 13.2.0 (MinGW-W64 i686-ucrt-posix-dwarf, built by Brecht Sanders) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wformat=1' '-mtune=generic' '-march=pentiumpro' '-dumpdir' 'a-' C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../libexec/gcc/i686-w64-mingw32/13.2.0/cc1.exe -E -quiet -v -iprefix C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/ -D_REENTRANT sye.test.c -mtune=generic -march=pentiumpro -Wformat=1 -fpch-preprocess -o a-sye.test.i ignoring duplicate directory "C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/lib/gcc/../../lib/gcc/i686-w64-mingw32/13.2.0/include" ignoring nonexistent directory "R:/winlibs32ucrt_stage/inst_gcc-13.2.0/share/gcc/include" ignoring nonexistent directory "/R/winlibs32ucrt_stage/inst_gcc-13.2.0/share/gcc/include" ignoring duplicate directory "C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/lib/gcc/../../lib/gcc/i686-w64-mingw32/13.2.0/include-fixed" ignoring duplicate directory "C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/lib/gcc/../../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/include" ignoring nonexistent directory "/mingw/include" #include "..." search starts here: #include <...> search starts here: C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/include C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../include C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/include-fixed C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wformat=1' '-mtune=generic' '-march=pentiumpro' '-dumpdir' 'a-' C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../libexec/gcc/i686-w64-mingw32/13.2.0/cc1.exe -fpreprocessed a-sye.test.i -quiet -dumpdir a- -dumpbase sye.test.c -dumpbase-ext .c -mtune=generic -march=pentiumpro -Wformat=1 -version -o a-sye.test.s GNU C17 (MinGW-W64 i686-ucrt-posix-dwarf, built by Brecht Sanders) version 13.2.0 (i686-w64-mingw32) compiled by GNU C version 13.2.0, GMP version 6.2.1, MPFR version 4.2.0, MPC version 1.3.1, isl version isl-0.26-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 460bd7219e466ddb6fefb9d503487049 sye.test.c: In function 'main': sye.test.c:4:20: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long long int' [-Wformat=] 4 | fprintf(stdout, "%I64d\n", 1LL); | ^~~~~~~~~ ~~~ | | | long long int sye.test.c:5:20: warning: format '%I64d' expects argument of type 'long long int', but argument 3 has type 'int' [-Wformat=] 5 | fprintf(stdout, "%I64d\n", 1); | ^~~~~~~~~ ~ | | | int COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wformat=1' '-mtune=generic' '-march=pentiumpro' '-dumpdir' 'a-' C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/bin/as.exe -v -o a-sye.test.o a-sye.test.s GNU assembler version 2.40 (i686-w64-mingw32) using BFD version (Binutils for MinGW-W64 i686, built by Brecht Sanders) 2.40 COMPILER_PATH=C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../libexec/gcc/i686-w64-mingw32/13.2.0/;C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../libexec/gcc/;C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/bin/ LIBRARY_PATH=C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/;C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/;C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/lib/../lib/;C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../lib/;C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/lib/;C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wformat=1' '-mtune=generic' '-march=pentiumpro' '-dumpdir' 'a.' C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../libexec/gcc/i686-w64-mingw32/13.2.0/collect2.exe -plugin C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../libexec/gcc/i686-w64-mingw32/13.2.0/liblto_plugin.dll -plugin-opt=C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../libexec/gcc/i686-w64-mingw32/13.2.0/lto-wrapper.exe -plugin-opt=-fresolution=a.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -m i386pe -Bdynamic --large-address-aware C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/lib/../lib/crt2.o C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/crtbegin.o -LC:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0 -LC:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc -LC:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/lib/../lib -LC:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../lib -LC:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../../../i686-w64-mingw32/lib -LC:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/../../.. a-sye.test.o -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lkernel32 C:/MinGW/winlibs-i686-posix-dwarf-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1/mingw32/bin/../lib/gcc/i686-w64-mingw32/13.2.0/crtend.o COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wformat=1' '-mtune=generic' '-march=pentiumpro' '-dumpdir' 'a.'