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.
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
}
while (note != add_cfi_insn);
}
+
+ prev_ti = ti;
}
}