[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[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: