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> 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 PR debug/49825
* dwarf2cfi.c (dwarf2out_stack_adjust): Move A_O_A test earlier. * dwarf2cfi.c (dwarf2out_stack_adjust): Move A_O_A test earlier.
(dwarf2out_notice_stack_adjust): Use args_size from call_insn. (dwarf2out_notice_stack_adjust): Use args_size from call_insn.
......
...@@ -2641,14 +2641,22 @@ connect_traces (void) ...@@ -2641,14 +2641,22 @@ connect_traces (void)
prev_ti = VEC_index (dw_trace_info, trace_info, 0); 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; dw_cfi_row *old_row;
ti = VEC_index (dw_trace_info, trace_info, i); ti = VEC_index (dw_trace_info, trace_info, i);
/* We must have both queued and processed every trace. */ /* ??? Ideally, we should have both queued and processed. However
gcc_assert (ti->beg_row && ti->end_row); 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 /* In dwarf2out_switch_text_section, we'll begin a new FDE
for the portion of the function in the alternate text for the portion of the function in the alternate text
...@@ -2677,6 +2685,8 @@ connect_traces (void) ...@@ -2677,6 +2685,8 @@ connect_traces (void)
} }
while (note != add_cfi_insn); 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