https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69677
Bug ID: 69677
Summary: [6 Regression] bootstrap failed with
--with-arch=corei7 --with-cpu=corei7
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: bootstrap
Assignee: unassigned at gcc dot gnu.org
Reporter: hjl.tools at gmail dot com
CC: jakub at redhat dot com
Target Milestone: ---
On ia32, r233128 failed to bootstrap when configured with
--with-arch=corei7 --with-cpu=corei7 --prefix=/usr/6.0.0 --enable-clocale=gnu
--with-system-zlib --enable-shared --with-demangler-in-ld --enable-libmpx
i686-linux --with-fpmath=sse --enable-languages=c,c++,fortran,java,lto,objc
https://gcc.gnu.org/ml/gcc-regression/2016-02/msg00068.html
[hjl@gnu-skl-1 gcc]$ cat /tmp/x.i
typedef int DItype __attribute__ ((mode (DI)));
typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));
struct DWstruct {SItype low, high;};
typedef union
{
struct DWstruct s;
DItype ll;
} DWunion;
DItype
__negdi2 (DItype u)
{
const DWunion uu = {.ll = u};
const DWunion w = { {.low = -uu.s.low,
.high = -uu.s.high - ((USItype) -uu.s.low > 0) } };
return w.ll;
}
[hjl@gnu-skl-1 gcc]$ ./xgcc -B./ -S -O2 /tmp/x.i
/tmp/x.i: In function ‘__negdi2’:
/tmp/x.i:18:1: internal compiler error: Segmentation fault
}
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
[hjl@gnu-skl-1 gcc]$
(gdb) bt
#0 0x086ffe63 in val_signbit_p(machine_mode, unsigned long long) ()
#1 0x08d73438 in combine_simplify_rtx(rtx_def*, machine_mode, int, int) ()
#2 0x08d750ad in subst(rtx_def*, rtx_def*, rtx_def*, int, int, int) ()
#3 0x08d74e1f in subst(rtx_def*, rtx_def*, rtx_def*, int, int, int) ()
#4 0x08d76327 in try_combine(rtx_insn*, rtx_insn*, rtx_insn*, rtx_insn*, int*,
rtx_insn*) ()
#5 0x08d7c4b1 in (anonymous namespace)::pass_combine::execute(function*) ()
#6 0x08662051 in execute_one_pass(opt_pass*) ()
#7 0x08662669 in execute_pass_list_1(opt_pass*) ()
#8 0x0866267c in execute_pass_list_1(opt_pass*) ()
#9 0x086626c9 in execute_pass_list(function*, opt_pass*) ()
#10 0x08358b33 in cgraph_node::expand() ()
#11 0x0835a3e4 in symbol_table::compile() [clone .part.51] ()
#12 0x0835c73f in symbol_table::finalize_compilation_unit() ()
#13 0x0872b897 in compile_file() ()
#14 0x081d6871 in toplev::main(int, char**) ()
#15 0x081d8911 in main ()
(gdb) disass
Dump of assembler code for function _Z13val_signbit_p12machine_modey:
0x086ffe10 <+0>: push %ebx
0x086ffe11 <+1>: xor %eax,%eax
0x086ffe13 <+3>: sub $0x10,%esp
0x086ffe16 <+6>: mov 0x18(%esp),%edx
0x086ffe1a <+10>: mov 0x1c(%esp),%ecx
0x086ffe1e <+14>: mov 0x20(%esp),%ebx
0x086ffe22 <+18>: cmpb $0x2,0x8f99440(%edx)
0x086ffe29 <+25>: mov %ecx,(%esp)
0x086ffe2c <+28>: mov %ebx,0x4(%esp)
0x086ffe30 <+32>: je 0x86ffe40 <_Z13val_signbit_p12machine_modey+48>
0x086ffe32 <+34>: add $0x10,%esp
0x086ffe35 <+37>: pop %ebx
0x086ffe36 <+38>: ret
0x086ffe37 <+39>: mov %esi,%esi
0x086ffe39 <+41>: lea 0x0(%edi,%eiz,1),%edi
0x086ffe40 <+48>: movzwl 0x8f99360(%edx,%edx,1),%ecx
0x086ffe48 <+56>: sub $0x1,%ecx
0x086ffe4b <+59>: cmp $0x3f,%ecx
0x086ffe4e <+62>: ja 0x86ffe32 <_Z13val_signbit_p12machine_modey+34>
0x086ffe50 <+64>: movq 0x8f98ea0(,%edx,8),%xmm0
0x086ffe59 <+73>: xor %eax,%eax
0x086ffe5b <+75>: xor %edx,%edx
---Type <return> to continue, or q <return> to quit---
0x086ffe5d <+77>: test $0x20,%cl
0x086ffe60 <+80>: sete %al
=> 0x086ffe63 <+83>: movdqa (%esp),%xmm2
0x086ffe68 <+88>: setne %dl
0x086ffe6b <+91>: shl %cl,%eax
0x086ffe6d <+93>: shl %cl,%edx
0x086ffe6f <+95>: pand %xmm0,%xmm2
0x086ffe73 <+99>: movd %eax,%xmm0
0x086ffe77 <+103>: pinsrd $0x1,%edx,%xmm0
0x086ffe7d <+109>: pxor %xmm2,%xmm0
0x086ffe81 <+113>: punpcklqdq %xmm0,%xmm0
0x086ffe85 <+117>: ptest %xmm0,%xmm0
0x086ffe8a <+122>: sete %al
0x086ffe8d <+125>: add $0x10,%esp
0x086ffe90 <+128>: pop %ebx
0x086ffe91 <+129>: ret
End of assembler dump.
(gdb) p $esp
$1 = (void *) 0xffffcb68
(gdb)