diff options
author | Richard Henderson <rth@redhat.com> | 2011-07-23 13:17:54 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2011-07-23 13:17:54 -0700 |
commit | 57e16c9625e094c687dbf8eef226905b48b26541 (patch) | |
tree | b4bce59406cfba4cec2473ceaacbd2e3ea2d99fb /gcc/dwarf2out.h | |
parent | f1a0e8300d7ee346adb69555ec4c930c89fb3997 (diff) | |
download | gcc-57e16c9625e094c687dbf8eef226905b48b26541.zip gcc-57e16c9625e094c687dbf8eef226905b48b26541.tar.gz gcc-57e16c9625e094c687dbf8eef226905b48b26541.tar.bz2 |
dwarf2cfi: Implement change_cfi_row.
Add a generic function to adjust cfi state from one row to another.
Use this to implement text section switching. This will also be
usable for arbitrary changes around a cfg for shrink-wrapping.
* dwarf2cfi.c (add_cfi_args_size): Split out from...
(dwarf2out_args_size): ... here.
(add_cfi_restore): Split out from ...
(dwarf2out_frame_debug_cfa_restore): ... here.
(def_cfa_0): Split out from ...
(def_cfa_1): ... here.
(cfi_oprnd_equal_p, cfi_equal_p): New.
(change_cfi_row): New.
(add_cfis_to_fde): Set fde->dw_fde_switch_cfi_index.
(create_cfi_notes): Use change_cfi_row at SWITCH_TEXT note.
(output_cfis): Remove.
* dwarf2out.c (output_fde): Simplify output_cfi loop.
(dwarf2out_switch_text_section): Don't call output_cfis.
(dw_val_equal_p, loc_descr_equal_p_1, loc_descr_equal_p): New.
* dwarf2out.h: Update decls.
(enum dw_val_class): Add dw_val_class_none.
From-SVN: r176700
Diffstat (limited to 'gcc/dwarf2out.h')
-rw-r--r-- | gcc/dwarf2out.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/dwarf2out.h b/gcc/dwarf2out.h index d0e76a7..711e8ab 100644 --- a/gcc/dwarf2out.h +++ b/gcc/dwarf2out.h @@ -134,6 +134,7 @@ typedef struct GTY(()) cfa_loc { enum dw_val_class { + dw_val_class_none, dw_val_class_addr, dw_val_class_offset, dw_val_class_loc, @@ -226,6 +227,7 @@ extern struct dw_loc_descr_struct *build_cfa_aligned_loc extern struct dw_loc_descr_struct *mem_loc_descriptor (rtx, enum machine_mode mode, enum machine_mode mem_mode, enum var_init_status); +extern bool loc_descr_equal_p (dw_loc_descr_ref, dw_loc_descr_ref); extern enum machine_mode get_address_mode (rtx mem); extern dw_fde_ref dwarf2out_alloc_current_fde (void); @@ -239,7 +241,6 @@ extern void lookup_cfa_1 (dw_cfi_ref cfi, dw_cfa_location *loc, extern bool cfa_equal_p (const dw_cfa_location *, const dw_cfa_location *); extern void output_cfi (dw_cfi_ref, dw_fde_ref, int); -extern void output_cfis (cfi_vec, int, bool, dw_fde_ref, bool); extern GTY(()) cfi_vec cie_cfi_vec; |