[Bug rtl-optimization/31944] Endless loop while building a 64-bit 2.6.20 kernel
------- Comment #3 from danglin at gcc dot gnu dot org 2007-05-20 17:38 -------
My last comment about this being a GC problem was wrong. Here's a
backtrace from a compiler containing debug symbols:
(gdb) bt
#0 0x4000000000c5a274 in get_cse_reg_info (regno=66)
at ../../gcc/gcc/cse.c:847
#1 0x4000000000c5d31c in invalidate (x=0x800003fffec89d00,
full_mode=VOIDmode) at ../../gcc/gcc/cse.c:1727
#2 0x4000000000c5cf18 in flush_hash_table () at ../../gcc/gcc/cse.c:1661
#3 0x4000000000c69d28 in cse_insn (insn=0x800003fffeda8f00, libcall_insn=0x0)
at ../../gcc/gcc/cse.c:5341
#4 0x4000000000c6d480 in cse_extended_basic_block (
ebb_data=0x800003fffeff12e0) at ../../gcc/gcc/cse.c:6104
#5 0x4000000000c6df74 in cse_main (f=0x800003fffec93ec0, nregs=74)
at ../../gcc/gcc/cse.c:6296
#6 0x4000000000c706f0 in rest_of_handle_cse () at ../../gcc/gcc/cse.c:7032
#7 0x400000000064a7e0 in execute_one_pass (pass=0x8000000100004d70)
at ../../gcc/gcc/passes.c:1065
#8 0x400000000064aaa8 in execute_pass_list (pass=0x8000000100004d70)
at ../../gcc/gcc/passes.c:1117
#9 0x400000000064aae8 in execute_pass_list (pass=0x8000000100002610)
at ../../gcc/gcc/passes.c:1118
#10 0x4000000000852070 in tree_rest_of_compilation (fndecl=0x800003fffec79300)
at ../../gcc/gcc/tree-optimize.c:406
#11 0x400000000021f844 in c_expand_body (fndecl=0x42fec89d00)
at ../../gcc/gcc/c-common.c:4345
#12 0x4000000000b3d09c in cgraph_expand_function (node=0x800003fffec79400)
---Type <return> to continue, or q <return> to quit---q
at .Quit
(gdb) p debug_rtx (0x800003fffec89d00)
(reg:DI 66 [ D.1605 ])
(gdb) frame 2
#2 0x4000000000c5cf18 in flush_hash_table () at ../../gcc/gcc/cse.c:1661
1661 invalidate (p->exp, VOIDmode);
(gdb) p i
$3 = 3
(gdb) p p
$4 = (struct table_elt *) 0x8000000100102d88
(gdb) p table[3]
$5 = (struct table_elt *) 0x8000000100102d88
static void
flush_hash_table (void)
{
int i;
struct table_elt *p;
for (i = 0; i < HASH_SIZE; i++)
for (p = table[i]; p; p = table[i])
{
/* Note that invalidate can remove elements
after P in the current hash chain. */
if (REG_P (p->exp))
invalidate (p->exp, VOIDmode);
else
remove_from_table (p, i);
}
}
So, it looks like we are stuck in flush_hash_table.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31944
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
Reply to: