Commit 149e741d by Richard Henderson Committed by Richard Henderson

re PR debug/49831 (arm-linux-gnueabi bootstrap failures due to ICE in dwarf2cfi.c connect_traces)

PR debug/49831
        * dwarf2cfi.c (connect_traces): Allow unvisited traces.  Skip
        them entirely.

Constant pools are emitted in such a way as to be indistinguishable
from regular instructions, and these constant pools are, naturally,
not reachable as code.

From-SVN: r176730
parent 981dc735
2011-07-24 Richard Henderson <rth@redhat.com>
PR debug/49831
* dwarf2cfi.c (connect_traces): Allow unvisited traces. Skip
them entirely.
2011-07-24 Richard Henderson <rth@redhat.com>
PR debug/49825
* dwarf2cfi.c (dwarf2out_stack_adjust): Move A_O_A test earlier.
(dwarf2out_notice_stack_adjust): Use args_size from call_insn.
......
......@@ -2641,14 +2641,22 @@ connect_traces (void)
prev_ti = VEC_index (dw_trace_info, trace_info, 0);
for (i = 1; i < n; ++i, prev_ti = ti)
for (i = 1; i < n; ++i)
{
dw_cfi_row *old_row;
ti = VEC_index (dw_trace_info, trace_info, i);
/* We must have both queued and processed every trace. */
gcc_assert (ti->beg_row && ti->end_row);
/* ??? Ideally, we should have both queued and processed. However
the current representation of constant pools on various targets
is indistinguishable from unreachable code. Assume for the
moment that we can simply skip over such traces. */
/* ??? Consider creating a DATA_INSN rtx code to indicate that
these are not "real" instructions, and should not be considered.
This could be generically useful for tablejump data as well. */
if (ti->beg_row == NULL)
continue;
gcc_assert (ti->end_row != NULL);
/* In dwarf2out_switch_text_section, we'll begin a new FDE
for the portion of the function in the alternate text
......@@ -2677,6 +2685,8 @@ connect_traces (void)
}
while (note != add_cfi_insn);
}
prev_ti = ti;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment