https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99354
Bug ID: 99354
Summary: spurious Wuninitialized warning diagnostic
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: raj.khem at gmail dot com
Target Milestone: ---
below test file triggers a warning with gcc 11, this worked fine with gcc10
=================================================
float HexFloat16ToFloat(const unsigned char* value) {
unsigned int sign = (static_cast<unsigned int>(value[1]) & 0x80) << 24U;
unsigned int exponent = (((static_cast<unsigned int>(value[1]) & 0x7c) >> 2U)
+ 112U)
<< 23U;
unsigned int mantissa = ((static_cast<unsigned int>(value[1]) & 0x3) << 8U |
static_cast<unsigned int>(value[0]))
<< 13U;
unsigned int hex = sign | exponent | mantissa;
float* hex_float = reinterpret_cast<float*>(&hex);
return *hex_float;
}
====================================================
g++ -O2 a.cpp -c -Wall
a.cpp: In function 'float HexFloat16ToFloat(const unsigned char*)':
a.cpp:11:11: warning: 'hex' is used uninitialized [-Wuninitialized]
11 | return *hex_float;
| ^~~~~~~~~
a.cpp:9:16: note: 'hex' declared here
9 | unsigned int hex = sign | exponent | mantissa;
| ^~~
=======================================================
gcc is configured as below
Using built-in specs.
COLLECT_GCC=/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/opengl-es-cts/3.2.6.1-r0/recipe-sysroot-native/usr/bin/riscv64-yoe-linux/riscv64-yoe-linux-g++
COLLECT_LTO_WRAPPER=/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/opengl-es-cts/3.2.6.1-r0/recipe-sysroot-native/usr/bin/riscv64-yoe-linux/../../libexec/riscv64-yoe-linux/gcc/riscv64-yoe-linux/11.0.1/lto-wrapper
Target: riscv64-yoe-linux
Configured with:
../../../../../../work-shared/gcc-11.0.1-r0/gcc-7c657339d6a4a671b4cd8bc62ba4e0df6bfc7c72/configure
--build=x86_64-linux --host=x86_64-linux --target=riscv64-yoe-linux
--prefix=/host-native/usr --exec_prefix=/host-native/usr
--bindir=/host-native/usr/bin/riscv64-yoe-linux
--sbindir=/host-native/usr/bin/riscv64-yoe-linux
--libexecdir=/host-native/usr/libexec/riscv64-yoe-linux
--datadir=/host-native/usr/share --sysconfdir=/host-native/etc
--sharedstatedir=/host-native/com --localstatedir=/host-native/var
--libdir=/host-native/usr/lib/riscv64-yoe-linux
--includedir=/host-native/usr/include --oldincludedir=/host-native/usr/include
--infodir=/host-native/usr/share/info --mandir=/host-native/usr/share/man
--disable-silent-rules --disable-dependency-tracking
--with-libtool-sysroot=/host-native --enable-clocale=generic --with-gnu-ld
--enable-shared --enable-languages=c,c++ --enable-threads=posix
--disable-multilib --enable-default-pie --enable-c99 --enable-long-long
--enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=riscv64-yoe-linux-
--without-local-prefix --disable-install-libiberty --disable-libssp
--enable-libitm --enable-lto --disable-bootstrap --with-system-zlib
--with-linker-hash-style=sysv --enable-linker-build-id --with-ppl=no
--with-cloog=no --enable-checking=release --enable-cheaders=c_global
--without-isl --with-gxx-include-dir=/not/exist/usr/include/c++/11.0.1
--with-sysroot=/not/exist --with-build-sysroot=/host
--enable-poison-system-directories --with-system-zlib --disable-static
--disable-nls --with-glibc-version=2.28 --enable-initfini-array
--enable-__cxa_atexit
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.0.1 20210226 (experimental) (GCC)