Commit 829bdd4b by Richard Henderson Committed by Richard Henderson

dwarf2cfi: Generate and connect traces.

This kinda-sorta corresponds to Bernd's 007-dw2cfi patch.  Certainly
the same concepts of splitting the instruction stream into extended
basic blocks is the same.  This patch does a bit better job with the
documentation.  Also, I'm a bit more explicit about matching things
up with the similar code from the regular CFG routines.

What's missing at this point is any attempt to use DW_CFA_remember_state.
I've deferred that for the moment because it's easy to test the state
change code across epilogues, whereas the shrink-wrapping code is not
in this tree and section switching is difficult to force.

        * dwarf2cfi.c: Include basic-block.h.
        (dw_label_info): Remove.
        (trace_work_list, trace_index): New.
        (remember_row, emit_cfa_remember): Remove.
        (dw_trace_info_hash, dw_trace_info_eq): New.
        (get_trace_index, get_trace_info): New.
        (save_point_p): New.
        (free_cfi_row): Remove.
        (add_cfi): Do not emit DW_CFA_remember_state.
        (cfa_row_equal_p): New.
        (barrier_args_size): Remove.
        (compute_barrier_args_size_1, compute_barrier_args_size): Remove.
        (dwarf2out_notice_stack_adjust): Don't compute_barrier_args_size.
        (maybe_record_trace_start, create_trace_edges, scan_trace): New.
        (dwarf2out_cfi_begin_epilogue): Remove.
        (dwarf2out_frame_debug_restore_state): Remove.
        (connect_traces, create_pseudo_cfg): New.
        (create_cfi_notes, execute_dwarf2_frame): Rewrite using traces.
        * Makefile.in (dwarf2cfi.o): Update.

From-SVN: r176705
parent 43215a89
2011-07-23 Richard Henderson <rth@redhat.com>
* dwarf2cfi.c: Include basic-block.h.
(dw_label_info): Remove.
(trace_work_list, trace_index): New.
(remember_row, emit_cfa_remember): Remove.
(dw_trace_info_hash, dw_trace_info_eq): New.
(get_trace_index, get_trace_info): New.
(save_point_p): New.
(free_cfi_row): Remove.
(add_cfi): Do not emit DW_CFA_remember_state.
(cfa_row_equal_p): New.
(barrier_args_size): Remove.
(compute_barrier_args_size_1, compute_barrier_args_size): Remove.
(dwarf2out_notice_stack_adjust): Don't compute_barrier_args_size.
(maybe_record_trace_start, create_trace_edges, scan_trace): New.
(dwarf2out_cfi_begin_epilogue): Remove.
(dwarf2out_frame_debug_restore_state): Remove.
(connect_traces, create_pseudo_cfg): New.
(create_cfi_notes, execute_dwarf2_frame): Rewrite using traces.
* Makefile.in (dwarf2cfi.o): Update.
2011-07-23 Richard Henderson <rth@redhat.com>
* dwarf2cfi.c (dw_trace_info): New.
(dw_label_info): New.
(cie_return_save): New.
......
......@@ -2957,7 +2957,7 @@ dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
tree-pretty-print.h $(COMMON_TARGET_H) $(OPTS_H)
dwarf2cfi.o : dwarf2cfi.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
version.h $(RTL_H) $(FUNCTION_H) $(DWARF2_H) dwarf2asm.h dwarf2out.h \
$(GGC_H) $(TM_P_H) $(TARGET_H) $(TREE_PASS_H)
$(GGC_H) $(TM_P_H) $(TARGET_H) $(TREE_PASS_H) $(BASIC_BLOCK_H)
dwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(FLAGS_H) $(RTL_H) $(TREE_H) output.h dwarf2asm.h $(TM_P_H) $(GGC_H) \
gt-dwarf2asm.h $(DWARF2_H) $(SPLAY_TREE_H) $(TARGET_H)
......
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