public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/67056] New: Wrong code generated
@ 2015-07-29 14:24 balder@yahoo-inc.com
  2015-07-29 14:26 ` [Bug c++/67056] " ktkachov at gcc dot gnu.org
                   ` (18 more replies)
  0 siblings, 19 replies; 20+ messages in thread
From: balder@yahoo-inc.com @ 2015-07-29 14:24 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 67056
           Summary: Wrong code generated
           Product: gcc
           Version: 5.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: balder@yahoo-inc.com
  Target Milestone: ---

Yes, I know a very bad summary. I need some help to narrow it down.

When upgrading compile from 4.9.3 to 5.2 1 of our unit tests started failing
with segmentation fault. It compiles fine, but generates bad code. There are no
warning neither with 4.9.3 nor with 5.2. We are also running the unit tests
with latest valgrind. With 5.2 valgrind complains about accessing deleted
memory.

I am not sure how I best can provide you with what you need in order to
investigate this as it fails at runtime and the unit test uses other shared
libraries. Any suggestions ?

I have made the following observations.

1 - We are building with -O3. The issue is also present at -O2. However if I
add -fno-tree-vrp it improves. Then there is no segmentation fault, but
valgrind complains about a memory leak. It fails to run a destructor.

2 - I can fix the issue by reordering members in one class from
    ConfigSnapshot snap;
    std::atomic<bool> configured;
    std::atomic<bool> throwException;
to
    std::atomic<bool> configured;
    std::atomic<bool> throwException;
    ConfigSnapshot snap;
Then valgrind is happy to. No need for tinkering with the compile flags.

3 - I move the implementation of the destructor and the constructor out of the
class definition and add __attribute__((noinline)) to them.
Then everything works perfectly too.

What can I provide that can help you investigate this ?

This is the compile command for the unit test. The code that I mention in 2 and
3 are both contained in the file compiled here.
g++ -g -O3 -Wuninitialized -Werror -Wall -W -Wchar-subscripts -Wcomment
-Wformat -Wparentheses -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wshadow
-Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DGCC_X86_64 -fPIC
-D_GLIBCXX_USE_CXX11_ABI=0 -DBOOST_DISABLE_ASSERTS -march=westmere -mtune=intel
-Wnon-virtual-dtor -std=c++14 -fvisibility-inlines-hidden            
-DNOT_BOOST_SPIRIT_THREADSAFE=1 -DNOT_PHOENIX_THREADSAFE=1
-DBOOST_NO_AUTO_PTR=1        -I../..
-I"/home/balder/build/lz4-PREINST/lz4-install/include" 
-I/home/balder/build/staging_vespalib-HEAD/staging_vespalib-install/include
-I"/home/balder/build/ytracelib-PREINST/ytracelib-install/include" 
-I/home/balder/build/fastlib-HEAD/fastlib-install/include
-I/home/balder/build/fnet-HEAD/fnet-install/include
-I/home/balder/build/vespalib-HEAD/vespalib-install/include -isystem
/home/balder/build/llvm-PREINST/llvm-install/include -isystem
/home/balder/build/boost-PREINST/boost-install/include/
-I/home/balder/build/vespalog-HEAD/vespalog-install/include
-I/home/balder/build/fastos-HEAD/fastos-install/include  
-DV_TAG_DATE='"20150729.142010"'  -DV_TAG_YINST='"5.81.0.20150729.142010"' 
-DV_TAG_COMPONENT='"5.81.0"'  -DV_TAG_ARCH='"x86_64"'  -DV_TAG_SYSTEM='"Linux"'
 -DV_TAG_SYSTEM_REV='"rhel-6.6"' 
-DV_TAG_BUILDER='"balder@honda.trondheim.corp"'  -DV_TAG='"CURRENT"'  -c
configretriever.cpp -o configretriever.o

g++ -v
[balder@honda configretriever]$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/home/y/bin64/../libexec/gcc/x86_64-redhat-linux/5.2.0/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ./configure --prefix=/home/y --enable-languages=c,c++
--host=x86_64-redhat-linux --build=x86_64-redhat-linux
--target=x86_64-redhat-linux --disable-bootstrap
LDFLAGS='-Wl,-rpath,/home/y/lib64 -L/home/y/lib64' --with-mpc=/home/y
--with-gmp=/home/y --with-mpfr=/home/y
Thread model: posix
gcc version 5.2.0 (GCC)


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2015-10-22  3:19 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
2015-07-29 14:26 ` [Bug c++/67056] " ktkachov at gcc dot gnu.org
2015-07-29 14:53 ` trippels at gcc dot gnu.org
2015-07-29 14:59 ` balder@yahoo-inc.com
2015-07-29 15:39 ` balder@yahoo-inc.com
2015-08-04 13:06 ` vegard@yahoo-inc.com
2015-08-04 13:09 ` vegard@yahoo-inc.com
2015-08-04 14:43 ` trippels at gcc dot gnu.org
2015-08-04 14:45 ` [Bug ipa/67056] [5/6 regression] " trippels at gcc dot gnu.org
2015-08-04 15:47 ` trippels at gcc dot gnu.org
2015-08-05  7:30 ` balder@yahoo-inc.com
2015-08-05  8:07 ` trippels at gcc dot gnu.org
2015-08-05 10:02 ` trippels at gcc dot gnu.org
2015-10-12  8:13 ` hubicka at gcc dot gnu.org
2015-10-16  4:45 ` hubicka at gcc dot gnu.org
2015-10-16  4:46 ` hubicka at gcc dot gnu.org
2015-10-16  6:25 ` hubicka at gcc dot gnu.org
2015-10-16  8:28 ` rguenth at gcc dot gnu.org
2015-10-21 21:14 ` hubicka at gcc dot gnu.org
2015-10-22  3:19 ` [Bug ipa/67056] [5 " hubicka at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).