https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85260
Bug ID: 85260 Summary: 8.0: python-2.7.14 miscompiled at -O3 Product: gcc Version: 8.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: manuel.lauss at googlemail dot com Target Milestone: --- python-2.7.14 seems to be miscompiled at -O3, while -O2 is fine. gcc-8 as of 20180405. gcc-7.3.1 -O3 is fine as well. build # LD_LIBRARY_PATH=$PWD ./python Segmentation fault (core dumped) #0 0x00007f784416d43a in PyInstance_NewRaw (klass=klass@entry=0x7f78439209a8, dict=0x7f7843d66910, dict@entry=0x0) at /tmp-ram/portage/dev-lang/python-2.7.14-r1/work/Python-2.7.14/Objects/classobject.c:544 544 inst->in_dict = dict; (gdb) list 539 return NULL; 540 } 541 inst->in_weakreflist = NULL; 542 Py_INCREF(klass); 543 inst->in_class = (PyClassObject *)klass; 544 inst->in_dict = dict; 545 _PyObject_GC_TRACK(inst); 546 return (PyObject *)inst; 547 } Dump of assembler code for function PyInstance_NewRaw: 0x00007f784416d3d0 <+0>: push %rbp 0x00007f784416d3d1 <+1>: push %rbx 0x00007f784416d3d2 <+2>: sub $0x18,%rsp 0x00007f784416d3d6 <+6>: mov 0x149b9b(%rip),%rax # 0x7f78442b6f78 0x00007f784416d3dd <+13>: cmp %rax,0x8(%rdi) 0x00007f784416d3e1 <+17>: jne 0x7f784416d490 <PyInstance_NewRaw+192> 0x00007f784416d3e7 <+23>: mov %rdi,%rbx 0x00007f784416d3ea <+26>: mov %rsi,%rbp 0x00007f784416d3ed <+29>: test %rsi,%rsi 0x00007f784416d3f0 <+32>: je 0x7f784416d4b0 <PyInstance_NewRaw+224> 0x00007f784416d3f6 <+38>: mov 0x8(%rsi),%rax 0x00007f784416d3fa <+42>: testb $0x20,0xab(%rax) 0x00007f784416d401 <+49>: je 0x7f784416d4d0 <PyInstance_NewRaw+256> 0x00007f784416d407 <+55>: incq (%rsi) 0x00007f784416d40a <+58>: mov 0x1496cf(%rip),%rdi # 0x7f78442b6ae0 0x00007f784416d411 <+65>: callq 0x7f784414a390 <_PyObject_GC_New@plt> 0x00007f784416d416 <+70>: test %rax,%rax 0x00007f784416d419 <+73>: je 0x7f784416d4e8 <PyInstance_NewRaw+280> 0x00007f784416d41f <+79>: vmovq %rbx,%xmm1 0x00007f784416d424 <+84>: movq $0x0,0x20(%rax) 0x00007f784416d42c <+92>: vpinsrq $0x1,%rbp,%xmm1,%xmm0 0x00007f784416d432 <+98>: incq (%rbx) 0x00007f784416d435 <+101>: cmpq $0xfffffffffffffffe,-0x10(%rax) => 0x00007f784416d43a <+106>: vmovaps %xmm0,0x10(%rax) 0x00007f784416d43f <+111>: lea -0x20(%rax),%rbx 0x00007f784416d443 <+115>: jne 0x7f784416d478 <PyInstance_NewRaw+168> 0x00007f784416d445 <+117>: mov 0x149834(%rip),%rdx # 0x7f78442b6c80 0x00007f784416d44c <+124>: movq $0xfffffffffffffffd,-0x10(%rax) 0x00007f784416d454 <+132>: mov (%rdx),%rcx 0x00007f784416d457 <+135>: mov %rcx,-0x20(%rax) 0x00007f784416d45b <+139>: mov 0x8(%rcx),%rcx 0x00007f784416d45f <+143>: mov %rcx,-0x18(%rax) 0x00007f784416d463 <+147>: mov %rbx,(%rcx) 0x00007f784416d466 <+150>: mov (%rdx),%rdx 0x00007f784416d469 <+153>: mov %rbx,0x8(%rdx) 0x00007f784416d46d <+157>: add $0x18,%rsp 0x00007f784416d471 <+161>: pop %rbx 0x00007f784416d472 <+162>: pop %rbp 0x00007f784416d473 <+163>: retq 0x00007f784416d474 <+164>: nopl 0x0(%rax) 0x00007f784416d478 <+168>: lea 0xf4d1d(%rip),%rdi # 0x7f784426219c 0x00007f784416d47f <+175>: mov %rax,0x8(%rsp) 0x00007f784416d484 <+180>: callq 0x7f784414b980 <Py_FatalError@plt> 0x00007f784416d489 <+185>: mov 0x8(%rsp),%rax 0x00007f784416d48e <+190>: jmp 0x7f784416d445 <PyInstance_NewRaw+117> 0x00007f784416d490 <+192>: mov $0x209,%esi 0x00007f784416d495 <+197>: lea 0xf6184(%rip),%rdi # 0x7f7844263620 0x00007f784416d49c <+204>: callq 0x7f784414c090 <_PyErr_BadInternalCall@plt> 0x00007f784416d4a1 <+209>: add $0x18,%rsp 0x00007f784416d4a5 <+213>: xor %eax,%eax 0x00007f784416d4a7 <+215>: pop %rbx 0x00007f784416d4a8 <+216>: pop %rbp 0x00007f784416d4a9 <+217>: retq 0x00007f784416d4aa <+218>: nopw 0x0(%rax,%rax,1) 0x00007f784416d4b0 <+224>: callq 0x7f784414be40 <PyDict_New@plt> 0x00007f784416d4b5 <+229>: mov %rax,%rbp [...] configured with CFLAGS="-O3 -march=haswell -mtune=haswell -pipe" ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/lib64 --with-fpectl --enable-shared --enable-ipv6 --with-threads --enable-unicode=ucs4 --infodir=${prefix}/share/info --mandir=${prefix}/share/man --with-computed-gotos --with-dbmliborder=gdbm --with-libc= --enable-loadable-sqlite-extensions --with-system-expat --with-system-ffi --without-ensurepip Thanks, Manuel