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. */