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

* [Bug c++/67056] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
@ 2015-07-29 14:26 ` ktkachov at gcc dot gnu.org
  2015-07-29 14:53 ` trippels at gcc dot gnu.org
                   ` (17 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: ktkachov at gcc dot gnu.org @ 2015-07-29 14:26 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from ktkachov at gcc dot gnu.org ---
There are some tips and instructions at:
https://gcc.gnu.org/bugs/

A reduced, preprocessed testcase would be ideal.


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

* [Bug c++/67056] Wrong code generated
  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
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: trippels at gcc dot gnu.org @ 2015-07-29 14:53 UTC (permalink / raw)
  To: gcc-bugs

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

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |trippels at gcc dot gnu.org

--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Also try to build your project with -fsanitize=undefined and see
if any issues pop up while running the unit tests.


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

* [Bug c++/67056] Wrong code generated
  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
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: balder@yahoo-inc.com @ 2015-07-29 14:59 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Henning Baldersheim <balder@yahoo-inc.com> ---
valgrind does not complain about anything undefined, but will try the sanitize
option too.

Will also try to isolate it as much as possible.


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

* [Bug c++/67056] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (2 preceding siblings ...)
  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
                   ` (14 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: balder@yahoo-inc.com @ 2015-07-29 15:39 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Henning Baldersheim <balder@yahoo-inc.com> ---
Using the -fsanitize-undefined caused this error.
configretriever.cpp: info:  running test suite 'configretriever.cpp'
/home/y/include/c++/5.2.0/bits/unique_ptr.h:76:2: runtime error: execution
reached a __builtin_unreachable() call
make: *** [test] Error 1

While it works fine when not inlining the constructor.


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

* [Bug c++/67056] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (3 preceding siblings ...)
  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
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: vegard@yahoo-inc.com @ 2015-08-04 13:06 UTC (permalink / raw)
  To: gcc-bugs

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

Vegard Sjonfjell <vegard@yahoo-inc.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vegard@yahoo-inc.com

--- Comment #5 from Vegard Sjonfjell <vegard@yahoo-inc.com> ---
Created attachment 36122
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36122&action=edit
Minimal failing example

We've tried to strip the code down to a minimal failing example. Compile with
-O3 -fPIC -std=c++11 (or std=c++14).


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

* [Bug c++/67056] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (4 preceding siblings ...)
  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
                   ` (12 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: vegard@yahoo-inc.com @ 2015-08-04 13:09 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Vegard Sjonfjell <vegard@yahoo-inc.com> ---
Created attachment 36123
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36123&action=edit
Preprocessed file

Also adding the preprocessed file.


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

* [Bug c++/67056] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (5 preceding siblings ...)
  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
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: trippels at gcc dot gnu.org @ 2015-08-04 14:43 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Created attachment 36126
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36126&action=edit
Somewhat reduced testcase


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (6 preceding siblings ...)
  2015-08-04 14:43 ` trippels at gcc dot gnu.org
@ 2015-08-04 14:45 ` trippels at gcc dot gnu.org
  2015-08-04 15:47 ` trippels at gcc dot gnu.org
                   ` (10 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: trippels at gcc dot gnu.org @ 2015-08-04 14:45 UTC (permalink / raw)
  To: gcc-bugs

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

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-08-04
                 CC|                            |hubicka at gcc dot gnu.org
          Component|c++                         |ipa
            Summary|Wrong code generated        |[5/6 regression] Wrong code
                   |                            |generated
     Ever confirmed|0                           |1

--- Comment #8 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
markus@x4 tmp % g++  -fsanitize=undefined -std=c++14 -O2 -fPIC mem.ii
markus@x4 tmp % ./a.out
mem.ii:72:5: runtime error: execution reached a __builtin_unreachable() call
markus@x4 tmp % g++ -fno-devirtualize -fsanitize=undefined  -std=c++14 -O2
-fPIC mem.ii
markus@x4 tmp % ./a.out
markus@x4 tmp %


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (7 preceding siblings ...)
  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
                   ` (9 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: trippels at gcc dot gnu.org @ 2015-08-04 15:47 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #9 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Started with r215902.


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (8 preceding siblings ...)
  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
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: balder@yahoo-inc.com @ 2015-08-05  7:30 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #10 from Henning Baldersheim <balder@yahoo-inc.com> ---
Wrong code generation on valid code does sound like a P2 to me.


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (9 preceding siblings ...)
  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
                   ` (7 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: trippels at gcc dot gnu.org @ 2015-08-05  8:07 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #11 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
(In reply to Henning Baldersheim from comment #10)
> Wrong code generation on valid code does sound like a P2 to me.

The release manager sets the importance.

Another question is if the transition from "requests valid" to
"wrong code" is a regression at all.


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (10 preceding siblings ...)
  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
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: trippels at gcc dot gnu.org @ 2015-08-05 10:02 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #12 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
(In reply to Markus Trippelsdorf from comment #11)
> Another question is if the transition from "requests valid" to
> "wrong code" is a regression at all.

Apart from the typo (s/requests/rejects) please ignore the comment
above, it was meant for a different PR.


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (11 preceding siblings ...)
  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
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: hubicka at gcc dot gnu.org @ 2015-10-12  8:13 UTC (permalink / raw)
  To: gcc-bugs

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

Jan Hubicka <hubicka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |hubicka at gcc dot gnu.org

--- Comment #13 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Will take a look.


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (12 preceding siblings ...)
  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
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: hubicka at gcc dot gnu.org @ 2015-10-16  4:45 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #14 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
OK, the unreachable is introduced here:
 - Creating a specialized node of bool staticBoolFunc(CompositeClass*)/414 for
all known contexts.
     the new node is <built-in>/977.                                            
     known ctx 0 is     Outer type (dynamic):struct EmptyClass offset -64       
No devirtualization target in <built-in>/977                                    
ipa-prop: Discovered a virtual call to a known target (<built-in>/977 -> void
__builtin_unreachable()/976), for stmt OBJ_TYPE_REF(_15;ptr_2(D)->1)
(ptr_2(D));
/aux/hubicka/trunk-install/include/c++/6.0.0/bits/unique_ptr.h:76:2: note:
converting indirect call in <built-in> to direct call to void
__builtin_unreachable()
No devirtualization target in <built-in>/977                                    
ipa-prop: Discovered a virtual call to a known target (<built-in>/977 -> void
__builtin_unreachable()/976), for stmt OBJ_TYPE_REF(_27;ptr_2(D)->1)
(ptr_2(D));
/aux/hubicka/trunk-install/include/c++/6.0.0/bits/unique_ptr.h:76:2: note:
converting indirect call in <built-in> to direct call to void
__builtin_unreachable()

So ipa-CP thinks that staticBoolFunc is called on EmptyClass instead of
CompositeClass:

Jump functions:                                                                 
  Jump functions of caller  long unsigned int __builtin_object_size(const
void*, int)/967:
  Jump functions of caller  void operator delete(void*, long unsigned int)/964: 
  Jump functions of caller  void* operator new(std::size_t)/963:                
  Jump functions of caller  int main(int, char**)/415:                          
    callsite  int main(int, char**)/415 -> void operator delete(void*, long
unsigned int)/964 :
    callsite  int main(int, char**)/415 -> bool
staticBoolFunc(CompositeClass*)/414 :
       param 0: UNKNOWN                                                         
         Context:     Outer type (dynamic):struct EmptyClass offset -64         
         Unknown alignment                                                      
    callsite  int main(int, char**)/415 -> EmptyClass::EmptyClass()/404 :       
       param 0: UNKNOWN                                                         
         Context:     Outer type (dynamic): (or a derived type) (maybe in
construction) offset 64 Speculative outer type:struct CompositeClass (or a
derived type) at offset 64
         Unknown alignment                                                      

This is indeed wrong. Jump function analysis seems to confuse constructors:

Modification phase of node int main(int, char**)/402
int main(int, char**) (int D.39529, char * * D.39530)
{
  void * _3;
  struct EmptyClass * _7;

  <bb 2>:
  _3 = operator new (16);
  MEM[(struct  &)_3] ={v} {CLOBBER};
  MEM[(struct CompositeClass *)_3]._vptr.CompositeClass = &MEM[(void
*)&_ZTV14CompositeClass + 16B];
  _7 = &MEM[(struct CompositeClass *)_3].object;
  EmptyClass::EmptyClass (_7);

  <bb 3>:
  staticBoolFunc (_3);
  return 0;

<L1>:
  operator delete (_3, 16);
  resx 1

EmptyClass ctor is called, but it should not type the object.

Determining dynamic type for call: staticBoolFunc (_3);
  Starting walk at: staticBoolFunc (_3);
  instance pointer: _3  Outer instance pointer: _3 offset: 0 (bits) vtbl
reference: 
  Checking constructor call: EmptyClass::EmptyClass (_7);
  Recording type: struct EmptyClass at offset -64
  Determined dynamic type.

This is quite a nonsense, because EmptyClass is not even. So there are two
bugs.
First is that we determine useless outer type. This should be just missed
optimization. But we also manage to consider to miss the case in placement_new
checking where we are completely off the structure....


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (13 preceding siblings ...)
  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
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: hubicka at gcc dot gnu.org @ 2015-10-16  4:46 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #15 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Created attachment 36520
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36520&action=edit
Fix I am teching.


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (14 preceding siblings ...)
  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
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: hubicka at gcc dot gnu.org @ 2015-10-16  6:25 UTC (permalink / raw)
  To: gcc-bugs

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

Jan Hubicka <hubicka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |doko at gcc dot gnu.org

--- Comment #16 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
*** Bug 66738 has been marked as a duplicate of this bug. ***


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (15 preceding siblings ...)
  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
  18 siblings, 0 replies; 20+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-10-16  8:28 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |5.3


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

* [Bug ipa/67056] [5/6 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (16 preceding siblings ...)
  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
  18 siblings, 0 replies; 20+ messages in thread
From: hubicka at gcc dot gnu.org @ 2015-10-21 21:14 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #17 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Author: hubicka
Date: Wed Oct 21 21:14:06 2015
New Revision: 229148

URL: https://gcc.gnu.org/viewcvs?rev=229148&root=gcc&view=rev
Log:
        PR ipa/67056
        * ipa-polymorphic-call.c (possible_placement_new): If cur_offset
        is negative we don't know the type.
        (check_stmt_for_type_change): Skip constructors of non-polymorphic
        types as those won't help devirutalization.
        * g++.dg/ipa/pr67056.C: New testcase.

Added:
    trunk/gcc/testsuite/g++.dg/ipa/pr67056.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ipa-polymorphic-call.c
    trunk/gcc/testsuite/ChangeLog


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

* [Bug ipa/67056] [5 regression] Wrong code generated
  2015-07-29 14:24 [Bug c++/67056] New: Wrong code generated balder@yahoo-inc.com
                   ` (17 preceding siblings ...)
  2015-10-21 21:14 ` hubicka at gcc dot gnu.org
@ 2015-10-22  3:19 ` hubicka at gcc dot gnu.org
  18 siblings, 0 replies; 20+ messages in thread
From: hubicka at gcc dot gnu.org @ 2015-10-22  3:19 UTC (permalink / raw)
  To: gcc-bugs

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

Jan Hubicka <hubicka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |UNCONFIRMED
            Summary|[5/6 regression] Wrong code |[5 regression] Wrong code
                   |generated                   |generated
     Ever confirmed|1                           |0

--- Comment #18 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Fixed on trunk so far; fix is backportable.


^ 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).