[Bug c++/85091] Compiler generates different code depending on whether -Wnonnull -Woverloaded-virtual given or not

vz-gcc at zeitlins dot org gcc-bugzilla@gcc.gnu.org
Tue Mar 27 12:58:00 GMT 2018


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

--- Comment #3 from Vadim Zeitlin <vz-gcc at zeitlins dot org> ---
(In reply to Richard Biener from comment #2)
> This looks like a GC / memory corruption issue to me.  Can you check whether
> using -fchecking uncovers anything?

Using -fchecking doesn't change anything, using -fchecking=2 makes the bug
disappear.

> I expect the issue will be impossible to reproduce for us,

If you can install Debian Buster (current testing), it should be reproducible.
At the very least, I've tested this on 2 completely different machines and the
behaviour was exactly the same.

> can you nevertheless please reproduce the output of
> 
> i686-w64-mingw32-g++ -c -std=c++17 -Wnonnull -Woverloaded-virtual -O2 -v
> 16795.cpp
> 
> ?  That is, if you append '-v'?

Sure:

% i686-w64-mingw32-g++ -c -std=c++17 -O2 -Wnonnull -Woverloaded-virtual -v
16795.cpp -o warn.o
Using built-in specs.
COLLECT_GCC=i686-w64-mingw32-g++
Target: i686-w64-mingw32
Configured with: ../../src/configure --build=i686-linux-gnu --prefix=/usr
--includedir='/usr/include' --mandir='/usr/share/man'
--infodir='/usr/share/info' --sysconfdir=/etc --localstatedir=/var
--disable-silent-rules --libdir='/usr/lib/i386-linux-gnu'
--libexecdir='/usr/lib/i386-linux-gnu' --disable-maintainer-mode
--disable-dependency-tracking --prefix=/usr --enable-shared --enable-static
--disable-multilib --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --libdir=/usr/lib --enable-libstdcxx-time=yes
--with-tune=generic --with-headers=/usr/i686-w64-mingw32/include
--enable-version-specific-runtime-libs --enable-fully-dynamic-string
--enable-libgomp --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-lto
--with-plugin-ld --enable-threads=win32 --program-suffix=-win32
--program-prefix=i686-w64-mingw32- --target=i686-w64-mingw32
--with-as=/usr/bin/i686-w64-mingw32-as --with-ld=/usr/bin/i686-w64-mingw32-ld
--enable-libatomic --enable-libstdcxx-filesystem-ts=yes
Thread model: win32
gcc version 7.2-win32 20180123 (GCC)
COLLECT_GCC_OPTIONS='-c' '-std=c++1z' '-O2' '-Wnonnull' '-Woverloaded-virtual'
'-v' '-o' 'warn.o' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro'
 /usr/lib/gcc/i686-w64-mingw32/7.2-win32/cc1plus -quiet -v -U_REENTRANT
16795.cpp -quiet -dumpbase 16795.cpp -mtune=generic -march=pentiumpro
-auxbase-strip warn.o -O2 -Wnonnull -Woverloaded-virtual -std=c++1z -version -o
/tmp/ccmscJ4Y.s
GNU C++14 (GCC) version 7.2-win32 20180123 (i686-w64-mingw32)
        compiled by GNU C version 7.2.0, GMP version 6.1.2, MPFR version
4.0.1-rc1, MPC version 1.1.0, isl version isl-0.18-GMP

warning: MPFR header version 4.0.1-rc1 differs from library version 4.0.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory
"/usr/lib/gcc/i686-w64-mingw32/7.2-win32/../../../../i686-w64-mingw32/sys-include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-w64-mingw32/7.2-win32/include/c++
 /usr/lib/gcc/i686-w64-mingw32/7.2-win32/include/c++/i686-w64-mingw32
 /usr/lib/gcc/i686-w64-mingw32/7.2-win32/include/c++/backward
 /usr/lib/gcc/i686-w64-mingw32/7.2-win32/include
 /usr/lib/gcc/i686-w64-mingw32/7.2-win32/include-fixed
 /usr/lib/gcc/i686-w64-mingw32/7.2-win32/../../../../i686-w64-mingw32/include
End of search list.
GNU C++14 (GCC) version 7.2-win32 20180123 (i686-w64-mingw32)
        compiled by GNU C version 7.2.0, GMP version 6.1.2, MPFR version
4.0.1-rc1, MPC version 1.1.0, isl version isl-0.18-GMP

warning: MPFR header version 4.0.1-rc1 differs from library version 4.0.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 9c828bbeabdb83d01b583e6b48da537a
16795.cpp: In function ‘unsigned int _get_output_format()’:
16795.cpp:316:25: warning: ‘unsigned int _get_output_format()’ redeclared
without dllimport attribute: previous dllimport ignored [-Wattributes]
 extern "C" unsigned int _get_output_format(void) {return 1;}
                         ^~~~~~~~~~~~~~~~~~
COLLECT_GCC_OPTIONS='-c' '-std=c++1z' '-O2' '-Wnonnull' '-Woverloaded-virtual'
'-v' '-o' 'warn.o' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro'
 /usr/bin/i686-w64-mingw32-as -v -o warn.o /tmp/ccmscJ4Y.s
GNU assembler version 2.29.1 (i686-w64-mingw32) using BFD version (GNU
Binutils) 2.29.1
COMPILER_PATH=/usr/lib/gcc/i686-w64-mingw32/7.2-win32/:/usr/lib/gcc/i686-w64-mingw32/7.2-win32/:/usr/lib/gcc/i686-w64-mingw32/:/usr/lib/gcc/i686-w64-mingw32/7.2-win32/:/usr/lib/gcc/i686-w64-mingw32/:/usr/lib/gcc/i686-w64-mingw32/7.2-win32/../../../../i686-w64-mingw32/bin/
LIBRARY_PATH=/usr/lib/gcc/i686-w64-mingw32/7.2-win32/:/usr/lib/gcc/i686-w64-mingw32/7.2-win32/../../../../i686-w64-mingw32/lib/../lib/:/usr/lib/gcc/i686-w64-mingw32/7.2-win32/../../../../i686-w64-mingw32/lib/
COLLECT_GCC_OPTIONS='-c' '-std=c++1z' '-O2' '-Wnonnull' '-Woverloaded-virtual'
'-v' '-o' 'warn.o' '-shared-libgcc' '-mtune=generic' '-march=pentiumpro'


More information about the Gcc-bugs mailing list