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)