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)

Reply via email to