[Bug middle-end/57896] [4.8 Regression] ICE in expand_expr_real_2
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Feb 20 09:12:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57896
--- Comment #14 from Uroš Bizjak <ubizjak at gmail dot com> ---
I have found where corruption of const_int_rtx array happens.
1. Put breakpoint on gen_rtx_CONST_INT to determine address of
const_int_rtx[24], a.k.a (const_int -40) and put HW watchpoint on its address:
Breakpoint 1, gen_rtx_CONST_INT (mode=VOIDmode, arg=0) at
../../gcc-svn/branches/gcc-4_8-branch/gcc/emit-rtl.c:400
400 if (arg >= - MAX_SAVED_CONST_INT && arg <= MAX_SAVED_CONST_INT)
(gdb) p debug_rtx (const_int_rtx[24])
(const_int -40 [0xffffffffffffffd8])
$1 = void
(gdb) d
Delete all breakpoints? (y or n) y
(gdb) p const_int_rtx[24]
$2 = (rtx) 0x2aaaae7ba1f0
(gdb) wa *0x2aaaae7ba1f0
Hardware watchpoint 2: *0x2aaaae7ba1f0
2. Delete gen_rtx_CONST_INT breakpoint and continue.
Hardware watchpoint 2: *0x2aaaae7ba1f0
Old value = 31
New value = -1366096128
0x0000000000605de6 in gen_reg_rtx (mode=V4SImode) at
../../gcc-svn/branches/gcc-4_8-branch/gcc/emit-rtl.c:918
918 regno_reg_rtx[reg_rtx_no++] = val;
(gdb) p debug_rtx (const_int_rtx[24])
(??? bad code 1792
)
$3 = void
(gdb) bt
#0 0x0000000000605de6 in gen_reg_rtx (mode=V4SImode) at
../../gcc-svn/branches/gcc-4_8-branch/gcc/emit-rtl.c:918
#1 0x000000000098aa52 in expand_vec_perm_interleave2 (d=0x7fffffffdde0) at
../../gcc-svn/branches/gcc-4_8-branch/gcc/config/i386/i386.c:39408
#2 0x000000000098b2a0 in ix86_expand_vec_perm_const_1 (d=0x7fffffffdde0) at
../../gcc-svn/branches/gcc-4_8-branch/gcc/config/i386/i386.c:40464
#3 0x000000000098b817 in ix86_vectorize_vec_perm_const_ok (vmode=<optimized
out>, sel=<optimized out>)
at ../../gcc-svn/branches/gcc-4_8-branch/gcc/config/i386/i386.c:40670
#4 0x000000000072ca92 in can_vec_perm_p (mode=V4SImode, variable=false,
sel=0x7fffffffde80 "\005\001\005\004")
at ../../gcc-svn/branches/gcc-4_8-branch/gcc/optabs.c:6492
#5 0x00000000008ed744 in lower_vec_perm(struct {...} *) (gsi=0x7fffffffdf50)
at ../../gcc-svn/branches/gcc-4_8-branch/gcc/tree-vect-generic.c:1207
#6 0x00000000008f0d09 in expand_vector_operations () at
../../gcc-svn/branches/gcc-4_8-branch/gcc/tree-vect-generic.c:1489
#7 0x000000000073fd91 in execute_one_pass (pass=0x1200440 <pass_lower_vector>)
at ../../gcc-svn/branches/gcc-4_8-branch/gcc/passes.c:2333
#8 0x00000000007402c1 in execute_pass_list (pass=0x1200440
<pass_lower_vector>) at ../../gcc-svn/branches/gcc-4_8-branch/gcc/passes.c:2381
Something goes on in expand_vec_perm_interleave2.
More information about the Gcc-bugs
mailing list