OSDN Git Service

dwarf2cfi: Generate and connect traces.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Jul 2011 20:49:33 +0000 (20:49 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Jul 2011 20:49:33 +0000 (20:49 +0000)
commit97c251e4f3e969c053c979dd702eb6ae05d78b4e
treeebcf19a72c92a542f709e09f40a0598278e6db58
parentb1613fc381ea05c8544fdc619edd9ee3e2db5f8b
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176705 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/Makefile.in
gcc/dwarf2cfi.c