public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/110998] New: Inconsistent -Wformat warnings issued for %I64d
@ 2023-08-11 22:02 syeberman at gmail dot com
  0 siblings, 0 replies; only message in thread
From: syeberman at gmail dot com @ 2023-08-11 22:02 UTC (permalink / raw)
  To: gcc-bugs

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.'

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-08-11 22:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-11 22:02 [Bug c/110998] New: Inconsistent -Wformat warnings issued for %I64d syeberman at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).