[Bug tree-optimization/69726] New: Bogus warnings with -O3 -Wuninitialized

jamrial at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Feb 9 03:13:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69726

            Bug ID: 69726
           Summary: Bogus warnings with -O3 -Wuninitialized
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jamrial at gmail dot com
  Target Milestone: ---

Created attachment 37636
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37636&action=edit
Test case

[jamrial@ArchVM ~]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/lib/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/jamrial/gcc-svn/configure --prefix=/usr/local
--libdir=/usr/local/lib --libexecdir=/usr/local/lib
--mandir=/usr/local/share/man --infodir=/usr/local/share/info
--enable-languages=c,c++,lto --enable-shared --enable-threads=posix
--enable-libmpx --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch
--disable-libssp --enable-gnu-unique-object --enable-linker-build-id
--enable-lto --enable-plugin --enable-install-libiberty
--with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib
--disable-bootstrap --disable-werror
Thread model: posix
gcc version 6.0.0 20160207 (experimental) (GCC)

[jamrial@ArchVM ~]$ gcc -Wuninitialized -O3 -c bink_idct.c
bink_idct.c: In function ‘bink_idct_put_c’:
bink_idct.c:57:9: warning: ‘*((void *)&temp+224)’ is used uninitialized in this
function [-Wuninitialized]
     int temp[64];
         ^~~~
bink_idct.c:57:9: warning: ‘*((void *)&temp+192)’ is used uninitialized in this
function [-Wuninitialized]
bink_idct.c:57:9: warning: ‘*((void *)&temp+160)’ is used uninitialized in this
function [-Wuninitialized]
bink_idct.c:57:9: warning: ‘*((void *)&temp+128)’ is used uninitialized in this
function [-Wuninitialized]
bink_idct.c:57:9: warning: ‘*((void *)&temp+96)’ is used uninitialized in this
function [-Wuninitialized]
bink_idct.c:57:9: warning: ‘*((void *)&temp+64)’ is used uninitialized in this
function [-Wuninitialized]
bink_idct.c:57:9: warning: ‘*((void *)&temp+32)’ is used uninitialized in this
function [-Wuninitialized]
bink_idct.c:57:9: warning: ‘temp’ is used uninitialized in this function
[-Wuninitialized]

This doesn't happen with -fno-tree-vectorize or any optimization level below
-O3.
gcc 5.3 is unaffected.

ffmpeg's test suite makes use of all these functions as you can see here
http://coverage.ffmpeg.org/src/libavcodec/binkdsp.c.gcov.html and gcc 5.3 ubsan
is happy with it as seen here
http://fate.ffmpeg.org/report.cgi?time=20160209015611&slot=x86_64-archlinux-gcc-ubsan
so they are most certainly bogus.


More information about the Gcc-bugs mailing list