https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125363
Bug ID: 125363
Summary: False positive warning on variable used uninitialized
Product: gcc
Version: 16.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: gessos.paul at yahoo dot gr
Target Milestone: ---
Created attachment 64484
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=64484&action=edit
The ii file
Compiling on 16.1 gives me this:
warning: 'r' may be used uninitialized [-Wmaybe-uninitialized]
2238 | #pragma omp declare reduction(add:VT:omp_out += omp_in)
initializer(omp_priv = {})
which was not happen in g++ 15.2.
Also 'r' is irrelevant with the real problem because 'r' is initialized
correctly.
The corresponding code:
[[maybe_unused]] VT r{};
// short-circuit for empty vectors (as results of rows and columns of
matrices)
if constexpr (!ForwardDenseVector<T1>) if (empty(v1)) return r;
if constexpr (!ForwardDenseVector<T3>) if (empty(v2)) return r;
#ifdef _OPENMP
#pragma omp declare reduction(add:VT:omp_out += omp_in)
initializer(omp_priv = {})
#endif
Compilation parameters:
-std=c++26 -fopenmp -pedantic -Wall -fno-rtti -fno-exceptions -Wno-parentheses
It happens on OpenMP, so, without -fopenmp or without -Wall, warning does not
appear.
File .ii included.
Version of g++:
C:\Windows\System32>g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=C:/Program\
Files/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/16.1.0/lto-wrapper.exe
OFFLOAD_TARGET_NAMES=nvptx-none
Target: x86_64-w64-mingw32
Configured with: ../configure
--prefix=/R/winlibs_staging_ucrt64/inst_gcc-16.1.0/share/gcc
--build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32
--enable-offload-targets=nvptx-none --with-pkgversion='MinGW-W64
x86_64-ucrt-posix-seh, built by Brecht Sanders, r1' --with-tune=generic
--enable-checking=release --enable-threads=posix --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
--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=/c/Prog/winlibs_staging_ucrt/custombuilt64
--with-mpfr=/c/Prog/winlibs_staging_ucrt/custombuilt64
--with-gmp=/c/Prog/winlibs_staging_ucrt/custombuilt64
--with-isl=/c/Prog/winlibs_staging_ucrt/custombuilt64
--disable-libstdcxx-backtrace --enable-install-libiberty --enable-__cxa_atexit
--without-included-gettext --with-diagnostics-color=auto
--enable-clocale=generic --enable-libgdiagnostics --with-libiconv
--with-system-zlib
--with-build-sysroot=/R/winlibs_staging_ucrt64/gcc-16.1.0/build_mingw/mingw-w64
CFLAGS='-I/c/Prog/winlibs_staging_ucrt/custombuilt64/include/libdl-win32
-march=nocona -msahf -mtune=generic -O2 -Wno-error=format'
CXXFLAGS='-Wno-int-conversion -march=nocona -msahf -mtune=generic -O2'
LDFLAGS='-pthread -Wl,--no-insert-timestamp -Wl,--dynamicbase
-Wl,--high-entropy-va -Wl,--nxcompat -Wl,--tsaware'
LD=/c/Prog/winlibs_staging_ucrt/custombuilt64/share/binutils/bin/ld.exe
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 16.1.0 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders,
r1)