[Bug rtl-optimization/57379] New: [4.9 Regression]: Segfault in invalidate_any_buried_refs (x=0x0) at ../../gcc-svn/trunk/gcc/gcse.c:3850
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed May 22 19:42:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57379
Bug ID: 57379
Summary: [4.9 Regression]: Segfault in
invalidate_any_buried_refs (x=0x0) at
../../gcc-svn/trunk/gcc/gcse.c:3850
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: ubizjak at gmail dot com
Target: alpha-linux-gnu
Created attachment 30167
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30167&action=edit
Preprocessed source
This is recent regression.
The segfault can be triggered with crosscompiler to alpha-linux-gnu, configured
with:
"../gcc-svn/trunk/configure --target=alpha-linux-gnu --with-long-double-128"
$ ~/gcc-build-alpha/gcc/cc1 -O2 -fpreprocessed -quiet libgcc2.i -o libgcc2.s
../../../gcc-svn/trunk/libgcc/libgcc2.c: In function ‘__multc3’:
../../../gcc-svn/trunk/libgcc/libgcc2.c:1927:1: internal compiler error:
Segmentation fault
0x8a5c0f crash_signal
../../gcc-svn/trunk/gcc/toplev.c:333
0x6fa870 invalidate_any_buried_refs
../../gcc-svn/trunk/gcc/gcse.c:3850
0x6fa924 invalidate_any_buried_refs
../../gcc-svn/trunk/gcc/gcse.c:3862
0x6fa924 invalidate_any_buried_refs
../../gcc-svn/trunk/gcc/gcse.c:3862
gdb session:
(gdb) r
Starting program: /home/uros/gcc-build-alpha/gcc/cc1 -O2 -fpreprocessed -quiet
libgcc2.i -o libgcc2.s
Program received signal SIGSEGV, Segmentation fault.
invalidate_any_buried_refs (x=0x0) at ../../gcc-svn/trunk/gcc/gcse.c:3850
3850 if (MEM_P (x) && simple_mem (x))
(gdb) b
#0 invalidate_any_buried_refs (x=0x0) at ../../gcc-svn/trunk/gcc/gcse.c:3850
#1 0x00000000006fa925 in invalidate_any_buried_refs (x=0x7ffff1884690) at
../../gcc-svn/trunk/gcc/gcse.c:3862
#2 0x00000000006fa925 in invalidate_any_buried_refs (x=0x7ffff1884678) at
../../gcc-svn/trunk/gcc/gcse.c:3862
#3 0x00000000006fa925 in invalidate_any_buried_refs (x=x@entry=0x7ffff1884660)
at ../../gcc-svn/trunk/gcc/gcse.c:3862
#4 0x00000000006fb4c2 in compute_ld_motion_mems () at
../../gcc-svn/trunk/gcc/gcse.c:3922
#5 one_pre_gcse_pass () at ../../gcc-svn/trunk/gcc/gcse.c:2679
#6 execute_rtl_pre () at ../../gcc-svn/trunk/gcc/gcse.c:4119
#7 0x00000000008033f0 in execute_one_pass (pass=pass@entry=0x10765c0
<pass_rtl_pre>) at ../../gcc-svn/trunk/gcc/passes.c:2337
#8 0x0000000000803855 in execute_pass_list (pass=0x10765c0 <pass_rtl_pre>) at
../../gcc-svn/trunk/gcc/passes.c:2389
...
(gdb) f 1
#1 0x00000000006fa925 in invalidate_any_buried_refs (x=0x7ffff1884690) at
../../gcc-svn/trunk/gcc/gcse.c:3862
3862 invalidate_any_buried_refs (XEXP (x, i));
(gdb) p debug_rtx (x)
(expr_list:REG_DEP_TRUE (reg/v:TF 70 [ x ])
(nil))
$1 = void
(gdb) f 4
#4 0x00000000006fb4c2 in compute_ld_motion_mems () at
../../gcc-svn/trunk/gcc/gcse.c:3922
3922 invalidate_any_buried_refs (src_eq);
(gdb) p debug_rtx (src_eq)
(expr_list:REG_DEP_TRUE (symbol_ref:DI ("_OtsEqlX") [flags 0x41])
(expr_list:REG_DEP_TRUE (reg/v:TF 70 [ x ])
(expr_list:REG_DEP_TRUE (reg/v:TF 70 [ x ])
(nil))))
$2 = void
(gdb) p debug_rtx (insn)
(insn 65 64 66 2 (set (reg:DI 148)
(reg:DI 0 $0)) ../../../gcc-svn/trunk/libgcc/libgcc2.c:1882 226
{*movdi}
(expr_list:REG_DEAD (reg:DI 0 $0)
(expr_list:REG_EQUAL (expr_list:REG_DEP_TRUE (symbol_ref:DI
("_OtsEqlX") [flags 0x41])
(expr_list:REG_DEP_TRUE (reg/v:TF 70 [ x ])
(expr_list:REG_DEP_TRUE (reg/v:TF 70 [ x ])
(nil))))
(nil))))
$3 = void
It looks like recursion doesn't check for NULL_RTX when processing expr_list.
More information about the Gcc-bugs
mailing list