comparison gcc/dwarf2out.h @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* dwarf2out.h - Various declarations for functions found in dwarf2out.c 1 /* dwarf2out.h - Various declarations for functions found in dwarf2out.c
2 Copyright (C) 1998-2017 Free Software Foundation, Inc. 2 Copyright (C) 1998-2018 Free Software Foundation, Inc.
3 3
4 This file is part of GCC. 4 This file is part of GCC.
5 5
6 GCC is free software; you can redistribute it and/or modify it under 6 GCC is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free 7 the terms of the GNU General Public License as published by the Free
41 enum dw_cfi_oprnd_type { 41 enum dw_cfi_oprnd_type {
42 dw_cfi_oprnd_unused, 42 dw_cfi_oprnd_unused,
43 dw_cfi_oprnd_reg_num, 43 dw_cfi_oprnd_reg_num,
44 dw_cfi_oprnd_offset, 44 dw_cfi_oprnd_offset,
45 dw_cfi_oprnd_addr, 45 dw_cfi_oprnd_addr,
46 dw_cfi_oprnd_loc 46 dw_cfi_oprnd_loc,
47 dw_cfi_oprnd_cfa_loc
47 }; 48 };
48 49
49 typedef union GTY(()) { 50 typedef union GTY(()) {
50 unsigned int GTY ((tag ("dw_cfi_oprnd_reg_num"))) dw_cfi_reg_num; 51 unsigned int GTY ((tag ("dw_cfi_oprnd_reg_num"))) dw_cfi_reg_num;
51 HOST_WIDE_INT GTY ((tag ("dw_cfi_oprnd_offset"))) dw_cfi_offset; 52 HOST_WIDE_INT GTY ((tag ("dw_cfi_oprnd_offset"))) dw_cfi_offset;
52 const char * GTY ((tag ("dw_cfi_oprnd_addr"))) dw_cfi_addr; 53 const char * GTY ((tag ("dw_cfi_oprnd_addr"))) dw_cfi_addr;
53 struct dw_loc_descr_node * GTY ((tag ("dw_cfi_oprnd_loc"))) dw_cfi_loc; 54 struct dw_loc_descr_node * GTY ((tag ("dw_cfi_oprnd_loc"))) dw_cfi_loc;
55 struct dw_cfa_location * GTY ((tag ("dw_cfi_oprnd_cfa_loc")))
56 dw_cfi_cfa_loc;
54 } dw_cfi_oprnd; 57 } dw_cfi_oprnd;
55 58
56 struct GTY(()) dw_cfi_node { 59 struct GTY(()) dw_cfi_node {
57 enum dwarf_call_frame_info dw_cfi_opc; 60 enum dwarf_call_frame_info dw_cfi_opc;
58 dw_cfi_oprnd GTY ((desc ("dw_cfi_oprnd1_desc (%1.dw_cfi_opc)"))) 61 dw_cfi_oprnd GTY ((desc ("dw_cfi_oprnd1_desc (%1.dw_cfi_opc)")))
112 as REG + OFFSET all the time, but now it can be more complex. 115 as REG + OFFSET all the time, but now it can be more complex.
113 It can now be either REG + CFA_OFFSET or *(REG + BASE_OFFSET) + CFA_OFFSET. 116 It can now be either REG + CFA_OFFSET or *(REG + BASE_OFFSET) + CFA_OFFSET.
114 Instead of passing around REG and OFFSET, we pass a copy 117 Instead of passing around REG and OFFSET, we pass a copy
115 of this structure. */ 118 of this structure. */
116 struct GTY(()) dw_cfa_location { 119 struct GTY(()) dw_cfa_location {
117 HOST_WIDE_INT offset; 120 poly_int64_pod offset;
118 HOST_WIDE_INT base_offset; 121 poly_int64_pod base_offset;
119 /* REG is in DWARF_FRAME_REGNUM space, *not* normal REGNO space. */ 122 /* REG is in DWARF_FRAME_REGNUM space, *not* normal REGNO space. */
120 unsigned int reg; 123 unsigned int reg;
121 BOOL_BITFIELD indirect : 1; /* 1 if CFA is accessed via a dereference. */ 124 BOOL_BITFIELD indirect : 1; /* 1 if CFA is accessed via a dereference. */
122 BOOL_BITFIELD in_use : 1; /* 1 if a saved cfa is stored here. */ 125 BOOL_BITFIELD in_use : 1; /* 1 if a saved cfa is stored here. */
123 }; 126 };
155 dw_val_class_high_pc, 158 dw_val_class_high_pc,
156 dw_val_class_discr_value, 159 dw_val_class_discr_value,
157 dw_val_class_discr_list, 160 dw_val_class_discr_list,
158 dw_val_class_const_implicit, 161 dw_val_class_const_implicit,
159 dw_val_class_unsigned_const_implicit, 162 dw_val_class_unsigned_const_implicit,
160 dw_val_class_file_implicit 163 dw_val_class_file_implicit,
164 dw_val_class_view_list,
165 dw_val_class_symview
161 }; 166 };
162 167
163 /* Describe a floating point constant value, or a vector constant value. */ 168 /* Describe a floating point constant value, or a vector constant value. */
164 169
165 struct GTY(()) dw_vec_const { 170 struct GTY(()) dw_vec_const {
198 union dw_val_struct_union 203 union dw_val_struct_union
199 { 204 {
200 rtx GTY ((tag ("dw_val_class_addr"))) val_addr; 205 rtx GTY ((tag ("dw_val_class_addr"))) val_addr;
201 unsigned HOST_WIDE_INT GTY ((tag ("dw_val_class_offset"))) val_offset; 206 unsigned HOST_WIDE_INT GTY ((tag ("dw_val_class_offset"))) val_offset;
202 dw_loc_list_ref GTY ((tag ("dw_val_class_loc_list"))) val_loc_list; 207 dw_loc_list_ref GTY ((tag ("dw_val_class_loc_list"))) val_loc_list;
208 dw_die_ref GTY ((tag ("dw_val_class_view_list"))) val_view_list;
203 dw_loc_descr_ref GTY ((tag ("dw_val_class_loc"))) val_loc; 209 dw_loc_descr_ref GTY ((tag ("dw_val_class_loc"))) val_loc;
204 HOST_WIDE_INT GTY ((default)) val_int; 210 HOST_WIDE_INT GTY ((default)) val_int;
205 unsigned HOST_WIDE_INT 211 unsigned HOST_WIDE_INT
206 GTY ((tag ("dw_val_class_unsigned_const"))) val_unsigned; 212 GTY ((tag ("dw_val_class_unsigned_const"))) val_unsigned;
207 double_int GTY ((tag ("dw_val_class_const_double"))) val_double; 213 double_int GTY ((tag ("dw_val_class_const_double"))) val_double;
226 char * lbl1; 232 char * lbl1;
227 char * lbl2; 233 char * lbl2;
228 } GTY ((tag ("dw_val_class_vms_delta"))) val_vms_delta; 234 } GTY ((tag ("dw_val_class_vms_delta"))) val_vms_delta;
229 dw_discr_value GTY ((tag ("dw_val_class_discr_value"))) val_discr_value; 235 dw_discr_value GTY ((tag ("dw_val_class_discr_value"))) val_discr_value;
230 dw_discr_list_ref GTY ((tag ("dw_val_class_discr_list"))) val_discr_list; 236 dw_discr_list_ref GTY ((tag ("dw_val_class_discr_list"))) val_discr_list;
237 char * GTY ((tag ("dw_val_class_symview"))) val_symbolic_view;
231 } 238 }
232 GTY ((desc ("%1.val_class"))) v; 239 GTY ((desc ("%1.val_class"))) v;
233 }; 240 };
234 241
235 /* Locations in memory are described using a sequence of stack machine 242 /* Locations in memory are described using a sequence of stack machine
265 int dw_discr_range; 272 int dw_discr_range;
266 }; 273 };
267 274
268 /* Interface from dwarf2out.c to dwarf2cfi.c. */ 275 /* Interface from dwarf2out.c to dwarf2cfi.c. */
269 extern struct dw_loc_descr_node *build_cfa_loc 276 extern struct dw_loc_descr_node *build_cfa_loc
270 (dw_cfa_location *, HOST_WIDE_INT); 277 (dw_cfa_location *, poly_int64);
271 extern struct dw_loc_descr_node *build_cfa_aligned_loc 278 extern struct dw_loc_descr_node *build_cfa_aligned_loc
272 (dw_cfa_location *, HOST_WIDE_INT offset, HOST_WIDE_INT alignment); 279 (dw_cfa_location *, poly_int64, HOST_WIDE_INT);
273 extern struct dw_loc_descr_node *mem_loc_descriptor 280 extern struct dw_loc_descr_node *mem_loc_descriptor
274 (rtx, machine_mode mode, machine_mode mem_mode, 281 (rtx, machine_mode mode, machine_mode mem_mode,
275 enum var_init_status); 282 enum var_init_status);
276 extern bool loc_descr_equal_p (dw_loc_descr_ref, dw_loc_descr_ref); 283 extern bool loc_descr_equal_p (dw_loc_descr_ref, dw_loc_descr_ref);
277 extern dw_fde_ref dwarf2out_alloc_current_fde (void); 284 extern dw_fde_ref dwarf2out_alloc_current_fde (void);