diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-23 20:17:54 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-23 20:17:54 +0000 |
commit | 0b3b5cad423e56304a458e79f8b5d25f143114d3 (patch) | |
tree | b4bce59406cfba4cec2473ceaacbd2e3ea2d99fb /gcc/dwarf2out.h | |
parent | e9fe542dcbe939faf1870eb2c1adc7eb02924fb7 (diff) | |
download | gcc-0b3b5cad423e56304a458e79f8b5d25f143114d3.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176700 138bc75d-0d04-0410-961f-82ee72b054a4
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 d0e76a786f8..711e8ab0d5e 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; |