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_defined_for_eh |
Referenced by connect_traces(), and notice_args_size().
bool dw_trace_info::args_size_undefined |
Referenced by connect_traces(), and maybe_record_trace_start().
poly_int64 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(), and maybe_record_trace_start().
poly_int64 dw_trace_info::beg_true_args_size |
Referenced by maybe_record_trace_start().
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_insn* dw_trace_info::eh_head |
Referenced by connect_traces(), notice_args_size(), and notice_eh_throw().
poly_int64 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().
poly_int64 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_insn* dw_trace_info::head |
Referenced by connect_traces(), create_pseudo_cfg(), get_trace_info(), and trace_info_hasher::hash().
unsigned dw_trace_info::id |
Referenced by connect_traces(), create_pseudo_cfg(), and maybe_record_trace_start().
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().