GCC Middle and Back End API Reference
|
Since we no longer have a proper CFG, we're going to create a facsimile of one on the fly while processing the frame-related insns. We create dw_trace_info structures for each extended basic block beginning and ending at a "save point". Save points are labels, barriers, certain notes, and of course the beginning and end of the function. As we encounter control transfer insns, we propagate the "current" row state across the edges to the starts of traces. When checking is enabled, we validate that we propagate the same data from all sources. All traces are members of the TRACE_INFO array, in the order in which they appear in the instruction stream. All save points are present in the TRACE_INDEX hash, mapping the insn starting a trace to the dw_trace_info describing the trace.
bool dw_trace_info::args_size_undefined |
Referenced by connect_traces(), and maybe_record_trace_start().
HOST_WIDE_INT dw_trace_info::beg_delay_args_size |
Referenced by connect_traces(), and notice_eh_throw().
dw_cfi_row* dw_trace_info::beg_row |
Referenced by connect_traces(), create_pseudo_cfg(), maybe_record_trace_start(), and scan_trace().
HOST_WIDE_INT dw_trace_info::beg_true_args_size |
Referenced by maybe_record_trace_start(), and scan_trace().
dw_cfa_location dw_trace_info::cfa_store |
Referenced by create_pseudo_cfg(), def_cfa_1(), dwarf2out_frame_debug_expr(), and maybe_record_trace_start().
dw_cfa_location dw_trace_info::cfa_temp |
Referenced by create_pseudo_cfg(), dwarf2out_frame_debug_expr(), and maybe_record_trace_start().
rtx dw_trace_info::eh_head |
Referenced by connect_traces(), and notice_eh_throw().
HOST_WIDE_INT dw_trace_info::end_delay_args_size |
Referenced by connect_traces(), and notice_eh_throw().
dw_cfi_row * dw_trace_info::end_row |
Referenced by connect_traces(), and scan_trace().
HOST_WIDE_INT dw_trace_info::end_true_args_size |
Referenced by maybe_record_trace_start(), maybe_record_trace_start_abnormal(), notice_args_size(), notice_eh_throw(), and scan_trace().
rtx dw_trace_info::head |
Referenced by connect_traces(), create_pseudo_cfg(), trace_info_hasher::equal(), get_trace_info(), trace_info_hasher::hash(), and scan_trace().
unsigned dw_trace_info::id |
Referenced by connect_traces(), create_pseudo_cfg(), maybe_record_trace_start(), and scan_trace().
vec<reg_saved_in_data> dw_trace_info::regs_saved_in_regs |
bool dw_trace_info::switch_sections |
Referenced by connect_traces(), and create_pseudo_cfg().