Mercurial > hg > CbC > CbC_gcc
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); |