Mercurial > hg > CbC > CbC_gcc
comparison gcc/emit-rtl.h @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 /* Exported functions from emit-rtl.c | 1 /* Exported functions from emit-rtl.c |
2 Copyright (C) 2004-2018 Free Software Foundation, Inc. | 2 Copyright (C) 2004-2020 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 |
18 <http://www.gnu.org/licenses/>. */ | 18 <http://www.gnu.org/licenses/>. */ |
19 | 19 |
20 #ifndef GCC_EMIT_RTL_H | 20 #ifndef GCC_EMIT_RTL_H |
21 #define GCC_EMIT_RTL_H | 21 #define GCC_EMIT_RTL_H |
22 | 22 |
23 struct temp_slot; | 23 class temp_slot; |
24 typedef struct temp_slot *temp_slot_p; | 24 typedef class temp_slot *temp_slot_p; |
25 class predefined_function_abi; | |
25 | 26 |
26 /* Information mainlined about RTL representation of incoming arguments. */ | 27 /* Information mainlined about RTL representation of incoming arguments. */ |
27 struct GTY(()) incoming_args { | 28 struct GTY(()) incoming_args { |
28 /* Number of bytes of args popped by function being compiled on its return. | 29 /* Number of bytes of args popped by function being compiled on its return. |
29 Zero if no bytes are to be popped. | 30 Zero if no bytes are to be popped. |
62 struct varasm_status varasm; | 63 struct varasm_status varasm; |
63 struct incoming_args args; | 64 struct incoming_args args; |
64 struct function_subsections subsections; | 65 struct function_subsections subsections; |
65 struct rtl_eh eh; | 66 struct rtl_eh eh; |
66 | 67 |
68 /* The ABI of the function, i.e. the interface it presents to its callers. | |
69 This is the ABI that should be queried to see which registers the | |
70 function needs to save before it uses them. | |
71 | |
72 Other functions (including those called by this function) might use | |
73 different ABIs. */ | |
74 const predefined_function_abi *GTY((skip)) abi; | |
75 | |
67 /* For function.c */ | 76 /* For function.c */ |
68 | 77 |
69 /* # of bytes of outgoing arguments. If ACCUMULATE_OUTGOING_ARGS is | 78 /* # of bytes of outgoing arguments. If ACCUMULATE_OUTGOING_ARGS is |
70 defined, the needed space is pushed by the prologue. */ | 79 defined, the needed space is pushed by the prologue. */ |
71 poly_int64_pod outgoing_args_size; | 80 poly_int64_pod outgoing_args_size; |
85 | 94 |
86 /* A variable living at the top of the frame that holds a known value. | 95 /* A variable living at the top of the frame that holds a known value. |
87 Used for detecting stack clobbers. */ | 96 Used for detecting stack clobbers. */ |
88 tree stack_protect_guard; | 97 tree stack_protect_guard; |
89 | 98 |
99 /* The __stack_chk_guard variable or expression holding the stack | |
100 protector canary value. */ | |
101 tree stack_protect_guard_decl; | |
102 | |
90 /* List (chain of INSN_LIST) of labels heading the current handlers for | 103 /* List (chain of INSN_LIST) of labels heading the current handlers for |
91 nonlocal gotos. */ | 104 nonlocal gotos. */ |
92 rtx_insn_list *x_nonlocal_goto_handler_labels; | 105 rtx_insn_list *x_nonlocal_goto_handler_labels; |
93 | 106 |
94 /* Label that will go on function epilogue. | 107 /* Label that will go on function epilogue. |
104 /* List (chain of EXPR_LISTs) of all stack slots in this function. | 117 /* List (chain of EXPR_LISTs) of all stack slots in this function. |
105 Made for the sake of unshare_all_rtl. */ | 118 Made for the sake of unshare_all_rtl. */ |
106 vec<rtx, va_gc> *x_stack_slot_list; | 119 vec<rtx, va_gc> *x_stack_slot_list; |
107 | 120 |
108 /* List of empty areas in the stack frame. */ | 121 /* List of empty areas in the stack frame. */ |
109 struct frame_space *frame_space_list; | 122 class frame_space *frame_space_list; |
110 | 123 |
111 /* Place after which to insert the tail_recursion_label if we need one. */ | 124 /* Place after which to insert the tail_recursion_label if we need one. */ |
112 rtx_note *x_stack_check_probe_note; | 125 rtx_note *x_stack_check_probe_note; |
113 | 126 |
114 /* Location at which to save the argument pointer if it will need to be | 127 /* Location at which to save the argument pointer if it will need to be |
130 | 143 |
131 /* List of all used temporaries allocated, by level. */ | 144 /* List of all used temporaries allocated, by level. */ |
132 vec<temp_slot_p, va_gc> *x_used_temp_slots; | 145 vec<temp_slot_p, va_gc> *x_used_temp_slots; |
133 | 146 |
134 /* List of available temp slots. */ | 147 /* List of available temp slots. */ |
135 struct temp_slot *x_avail_temp_slots; | 148 class temp_slot *x_avail_temp_slots; |
136 | 149 |
137 /* Current nesting level for temporaries. */ | 150 /* Current nesting level for temporaries. */ |
138 int x_temp_slot_level; | 151 int x_temp_slot_level; |
139 | 152 |
140 /* The largest alignment needed on the stack, including requirement | 153 /* The largest alignment needed on the stack, including requirement |
243 bool stack_realign_finalized; | 256 bool stack_realign_finalized; |
244 | 257 |
245 /* True if dbr_schedule has already been called for this function. */ | 258 /* True if dbr_schedule has already been called for this function. */ |
246 bool dbr_scheduled_p; | 259 bool dbr_scheduled_p; |
247 | 260 |
248 /* True if current function can not throw. Unlike | 261 /* True if current function cannot throw. Unlike |
249 TREE_NOTHROW (current_function_decl) it is set even for overwritable | 262 TREE_NOTHROW (current_function_decl) it is set even for overwritable |
250 function where currently compiled version of it is nothrow. */ | 263 function where currently compiled version of it is nothrow. */ |
251 bool nothrow; | 264 bool nothrow; |
252 | 265 |
253 /* True if we performed shrink-wrapping for the current function. */ | 266 /* True if we performed shrink-wrapping for the current function. */ |
313 we never keep multiple functions. For threaded compiler we might however | 326 we never keep multiple functions. For threaded compiler we might however |
314 want to do differently. */ | 327 want to do differently. */ |
315 #define crtl (&x_rtl) | 328 #define crtl (&x_rtl) |
316 | 329 |
317 /* Return whether two MEM_ATTRs are equal. */ | 330 /* Return whether two MEM_ATTRs are equal. */ |
318 bool mem_attrs_eq_p (const struct mem_attrs *, const struct mem_attrs *); | 331 bool mem_attrs_eq_p (const class mem_attrs *, const class mem_attrs *); |
319 | 332 |
320 /* Set the alias set of MEM to SET. */ | 333 /* Set the alias set of MEM to SET. */ |
321 extern void set_mem_alias_set (rtx, alias_set_type); | 334 extern void set_mem_alias_set (rtx, alias_set_type); |
322 | 335 |
323 /* Set the alignment of MEM to ALIGN bits. */ | 336 /* Set the alignment of MEM to ALIGN bits. */ |