summaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-07-23 20:17:54 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-07-23 20:17:54 +0000
commit0b3b5cad423e56304a458e79f8b5d25f143114d3 (patch)
treeb4bce59406cfba4cec2473ceaacbd2e3ea2d99fb /gcc/dwarf2out.h
parente9fe542dcbe939faf1870eb2c1adc7eb02924fb7 (diff)
downloadgcc-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.h3
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;