https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78394
Eric Gallager <egall at gwmail dot gwu.edu> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |egall at gwmail dot gwu.edu --- Comment #2 from Eric Gallager <egall at gwmail dot gwu.edu> --- I can confirm it only happens with the -Og optimization level; I also tested -Ofast and -Os, and neither of those triggered it either. gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -O0 maybe_uninit_00.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -Og maybe_uninit_00.cpp maybe_uninit_00.cpp: In function ‘float foo()’: maybe_uninit_00.cpp:19:17: warning: ‘vy’ may be used uninitialized in this function [-Wmaybe-uninitialized] return vx + vy; ^~ maybe_uninit_00.cpp:19:17: warning: ‘vx’ may be used uninitialized in this function [-Wmaybe-uninitialized] gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -O1 maybe_uninit_00.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -O2 maybe_uninit_00.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -O3 maybe_uninit_00.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -Ofast maybe_uninit_00.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -Os maybe_uninit_00.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -O0 maybe_uninit_01.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -O0 -g maybe_uninit_01.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -Og maybe_uninit_01.cpp maybe_uninit_01.cpp: In function ‘float foo()’: maybe_uninit_01.cpp:19:17: warning: ‘vy’ may be used uninitialized in this function [-Wmaybe-uninitialized] return vx + vy; ^~ maybe_uninit_01.cpp:19:17: warning: ‘vx’ may be used uninitialized in this function [-Wmaybe-uninitialized] gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -Ofast maybe_uninit_01.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -Ofast -g maybe_uninit_01.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -Os maybe_uninit_01.cpp gcc_bugs root$ /usr/local/bin/g++ -Wall -Wextra -pedantic -Wmaybe-uninitialized -Weffc++ -Winline -Wfloat-conversion -c -Os -g maybe_uninit_01.cpp gcc_bugs root$ /usr/local/bin/g++ -v Using built-in specs. COLLECT_GCC=/usr/local/bin/g++ COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i386-apple-darwin9.8.0/7.0.0/lto-wrapper Target: i386-apple-darwin9.8.0 Configured with: ../configure --disable-werror --disable-werror-always --enable-languages=c,c++,lto,objc,obj-c++ --enable-stage1-checking=release -C --with-system-libunwind --enable-secureplt --enable-frame-pointer --enable-debug --with-isl --enable-objc-gc --disable-host-shared --enable-maintainer-mode --disable-default-pie --with-ld64 --without-pic CC=/usr/local/bin/gcc CXX=/usr/local/bin/g++ AUTOCONF=/usr/local/bin/autoconf AUTOHEADER=/usr/local/bin/autoheader AUTORECONF=/usr/local/bin/autoreconf AUTOM4TE=/usr/local/bin/autom4te AUTOSCAN=/usr/local/bin/autoscan AUTOUPDATE=/usr/local/bin/autoupdate IFNAMES=/usr/local/bin/ifnames Thread model: posix gcc version 7.0.0 20161027 (experimental) (GCC)