Using -Wall and -Woverloaded-virtual together changes the behaviour of the code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 Hello,

 I'm running into a rather crazy problem that I can't minimize enough to
create a bug report for, so I'd like to ask here if anybody might have any
ideas about it by chance. The problem is that the behaviour of some piece
of C++ code changes, when compiling using MinGW g++ 7.2 (20180123 version
from Debian Buster) and "-O2", depending on whether _both_ of -Wall and
-Woverloaded-virtual command line options are specified or not. I.e. the
code behaves in the same way (and the generated assembly is identical) when
compiling with just "-O2", or with "-O2 -Wall", or with "-O2
-Woverloaded-virtual", but when all of "-O2 -Wall -Woverloaded-virtual" are
used, the code behaviour changes (it's a unit test and it starts failing)
and the assembly for the functions in which the test fails looks very
different.

 Unfortunately I can't reduce the program to anything reasonably small as
just about any changes to the source file, including to the clearly
unrelated stuff, make the bug disappear. I've tried using delta tool
recommended by gcc wiki, but it didn't produce anything useful after
running for many hours (it reduced the test case from 85801 initial lines
of preprocessed code to ~67000, which is not really very useful...).

 Does anyone know what else could I try doing? Or maybe someone already
knows how does the combination of these 2 warning switches affect the code
generation (which is something I'd naïvely expect to be impossible)?

 Thanks in advance for any help!
VZ

Attachment: pgpoxqH0LvxvZ.pgp
Description: PGP signature


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux