https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100496
Bug ID: 100496 Summary: False positive with -Wmaybe-uninitialized Product: gcc Version: 11.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: jochen447 at concept dot de Target Milestone: --- Created attachment 50784 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50784&action=edit minimal example code to trigger the false positive warning I have a piece of C code that is 100% correct, compiles fine, but evokes a warning with -Wmaybe-uninitialized: $ gcc -c -Wmaybe-uninitialized uninit.c uninit.c: In function ‘findEncoding’: uninit.c:19:3: warning: ‘buf’ may be used uninitialized [-Wmaybe-uninitialized] 19 | XmlUtf8Convert(p, p + sizeof(buf) - 1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ uninit.c:14:13: note: by argument 2 of type ‘const char * const’ to ‘XmlUtf8Convert’ declared here 14 | extern void XmlUtf8Convert(char* p_start, const char* const p_end); | ^~~~~~~~~~~~~~ uninit.c:17:8: note: ‘buf’ declared here 17 | char buf[128]; | ^~~ The compiler complains about the 2nd argument passed down to function XmlUtf8Convert. It is indeed pointing to uninitialized memory (but so is the first argument). But it cannot see that this pointer serves as a guard (pointer arithmetic) - it is never dereferenced inside the function XmlUtf8Convert. So the compiler's assumptions are wrong here. More info: ========== $ uname -a Linux inspiron14l 5.11.18-300.fc34.x86_64 #1 SMP Mon May 3 15:10:32 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-redhat-linux Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-11.1.1-20210428/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.1.1 20210428 (Red Hat 11.1.1-1) (GCC)