37 void ensure_regno_capacity ();
90#define reg_rtx_no (crtl->emit.x_reg_rtx_no)
92#define REGNO_POINTER_ALIGN(REGNO) (crtl->emit.regno_pointer_align[REGNO])
150#define pending_stack_adjust (crtl->expr.x_pending_stack_adjust)
151#define inhibit_defer_pop (crtl->expr.x_inhibit_defer_pop)
152#define saveregs_value (crtl->expr.x_saveregs_value)
153#define apply_args_value (crtl->expr.x_apply_args_value)
154#define forced_labels (crtl->expr.x_forced_labels)
155#define stack_pointer_delta (crtl->expr.x_stack_pointer_delta)
237#define current_function_static_stack_size (cfun->su->static_stack_size)
238#define current_function_dynamic_stack_size (cfun->su->dynamic_stack_size)
239#define current_function_pushed_stack_size (cfun->su->pushed_stack_size)
240#define current_function_has_unbounded_dynamic_stack_size \
241 (cfun->su->has_unbounded_dynamic_stack_size)
242#define current_function_allocates_dynamic_stack_space \
243 (current_function_dynamic_stack_size != 0 \
244 || current_function_has_unbounded_dynamic_stack_size)
323 int debug_marker_count;
329 location_t function_start_locus;
332 location_t function_end_locus;
335 unsigned int curr_properties;
336 unsigned int last_verified;
343 unsigned int pending_TODOs;
348 const
char *
GTY((skip)) cannot_be_copied_reason;
351 unsigned short last_clique;
358 unsigned int va_list_gpr_size : 8;
362 unsigned int va_list_fpr_size : 8;
365 unsigned int calls_setjmp : 1;
369 unsigned int calls_alloca : 1;
372 unsigned int calls_eh_return : 1;
376 unsigned int has_nonlocal_label : 1;
380 unsigned int has_forced_label_in_static : 1;
385 unsigned int cannot_be_copied_set : 1;
388 unsigned int stdarg : 1;
390 unsigned int after_inlining : 1;
391 unsigned int always_inline_functions_inlined : 1;
395 unsigned int can_throw_non_call_exceptions : 1;
399 unsigned int can_delete_dead_exceptions : 1;
406 unsigned int returns_struct : 1;
410 unsigned int returns_pcc_struct : 1;
414 unsigned int has_local_explicit_reg_vars : 1;
420 unsigned int is_thunk : 1;
424 unsigned int has_force_vectorize_loops : 1;
428 unsigned int has_simduid_loops : 1;
431 unsigned int tail_call_marked : 1;
434 unsigned int has_musttail : 1;
437 unsigned int has_unroll : 1;
441 unsigned int debug_nonbind_markers : 1;
444 unsigned int coroutine_component : 1;
447 unsigned int has_omp_target : 1;
451 unsigned int assume_function : 1;
458#define FOR_EACH_LOCAL_DECL(FUN, I, D) \
459 FOR_EACH_VEC_SAFE_ELT_REVERSE ((FUN)->local_decls, I, D)
469#define VA_LIST_MAX_GPR_SIZE 255
470#define VA_LIST_MAX_FPR_SIZE 255
478#define cfun (cfun + 0)
516 return fn->x_current_loops;
540#define current_function_funcdef_no (cfun->funcdef_no)
542#define current_loops (cfun->x_current_loops)
543#define dom_computed (cfun->cfg->x_dom_computed)
544#define n_bbs_in_dom_tree (cfun->cfg->x_n_bbs_in_dom_tree)
545#define VALUE_HISTOGRAMS(fun) (fun)->value_histograms
549extern struct machine_function * (*init_machine_status) (void);
586#define ADD_PARM_SIZE(TO, INC) \
589 if (tree_fits_shwi_p (inc)) \
590 (TO).constant += tree_to_shwi (inc); \
591 else if ((TO).var == 0) \
592 (TO).var = fold_convert (ssizetype, inc); \
594 (TO).var = size_binop (PLUS_EXPR, (TO).var, \
595 fold_convert (ssizetype, inc)); \
598#define SUB_PARM_SIZE(TO, DEC) \
601 if (tree_fits_shwi_p (dec)) \
602 (TO).constant -= tree_to_shwi (dec); \
603 else if ((TO).var == 0) \
604 (TO).var = size_binop (MINUS_EXPR, ssize_int (0), \
605 fold_convert (ssizetype, dec)); \
607 (TO).var = size_binop (MINUS_EXPR, (TO).var, \
608 fold_convert (ssizetype, dec)); \
613#define ARGS_SIZE_TREE(SIZE) \
614((SIZE).var == 0 ? ssize_int ((SIZE).constant) \
615 : size_binop (PLUS_EXPR, fold_convert (ssizetype, (SIZE).var), \
616 ssize_int ((SIZE).constant)))
619#define ARGS_SIZE_RTX(SIZE) \
620((SIZE).var == 0 ? gen_int_mode ((SIZE).constant, Pmode) \
621 : expand_normal (ARGS_SIZE_TREE (SIZE)))
623#define ASLK_REDUCE_ALIGN 1
624#define ASLK_RECORD_PAD 2
629#define MINIMUM_METHOD_BOUNDARY \
630 ((TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn) \
631 ? MAX (FUNCTION_BOUNDARY, 2 * BITS_PER_UNIT) : FUNCTION_BOUNDARY)
Definition function.h:188
class frame_space * next
Definition function.h:190
poly_int64 start
Definition function.h:192
poly_int64 length
Definition function.h:193
Definition hash-table.h:375
Definition value-query.h:55
Definition function.h:211
vec< callinfo_dalloc, va_gc > * dallocs
Definition function.h:234
HOST_WIDE_INT dynamic_stack_size
Definition function.h:218
poly_int64 pushed_stack_size
Definition function.h:223
vec< callinfo_callee, va_gc > * callees
Definition function.h:230
unsigned int has_unbounded_dynamic_stack_size
Definition function.h:227
HOST_WIDE_INT static_stack_size
Definition function.h:214
class edge_def * edge
Definition coretypes.h:352
pad_direction
Definition coretypes.h:294
const union tree_node * const_tree
Definition coretypes.h:98
#define GTY(x)
Definition coretypes.h:41
union tree_node * tree
Definition coretypes.h:97
rtx assign_stack_temp_for_type(machine_mode mode, poly_int64 size, tree type)
Definition function.cc:792
rtx get_arg_pointer_save_area(void)
Definition function.cc:5646
tree blocks_nreverse(tree t)
Definition function.cc:4532
void locate_and_pad_parm(machine_mode passed_mode, tree type, int in_regs, int reg_parm_stack_space, int partial, tree fndecl, struct args_size *initial_offset_ptr, struct locate_and_pad_arg_data *locate)
Definition function.cc:4026
static int funcdef_no
Definition function.cc:114
void stack_protect_epilogue(void)
Definition function.cc:5040
void free_after_compilation(struct function *f)
Definition function.cc:205
void push_function_context(void)
Definition function.cc:166
void emit_initial_value_sets(void)
Definition function.cc:1344
gimple_seq gimplify_parameters(gimple_seq *cleanup)
Definition function.cc:3885
const char * fndecl_name(tree fndecl)
Definition function.cc:6445
void used_types_insert(tree t)
Definition function.cc:6493
unsigned int spill_slot_alignment(machine_mode mode)
Definition function.cc:268
vec< tree, va_gc > * types_used_by_cur_var_decl
Definition function.cc:136
void clobber_return_register(void)
Definition function.cc:5364
void push_struct_function(tree fndecl, bool abstract_p)
Definition function.cc:4926
bool prologue_epilogue_contains(const rtx_insn *insn)
Definition function.cc:5807
bool use_register_for_decl(const_tree decl)
Definition function.cc:2161
void dump_stack_clash_frame_info(enum stack_clash_probes probes, bool residuals)
Definition function.cc:5687
void thread_prologue_and_epilogue_insns(void)
Definition function.cc:6095
void set_return_jump_label(rtx_insn *returnjump)
Definition function.cc:5831
void update_temp_slot_address(rtx old_rtx, rtx new_rtx)
Definition function.cc:1101
void push_cfun(struct function *new_cfun)
Definition function.cc:4766
void pop_function_decl(void)
Definition function.cc:4800
void add_local_decl(struct function *fun, tree d)
Definition function.cc:7034
rtx assign_stack_local(machine_mode mode, poly_int64 size, int align)
Definition function.cc:545
void pop_temp_slots(void)
Definition function.cc:1226
hash_table< used_type_hasher > * types_used_by_vars_hash
Definition function.cc:135
static void push_function_decl(function *new_cfun, tree new_fndecl, bool force)
Definition function.cc:4742
void record_prologue_seq(rtx_insn *seq)
Definition function.cc:5817
const char * current_function_name(void)
Definition function.cc:6462
bool initial_value_entry(int i, rtx *hreg, rtx *preg)
Definition function.cc:1365
void record_epilogue_seq(rtx_insn *seq)
Definition function.cc:5823
void expand_function_end(void)
Definition function.cc:5395
void init_function_start(tree subr)
Definition function.cc:5021
bool epilogue_contains(const rtx_insn *insn)
Definition function.cc:5801
void pop_dummy_function(void)
Definition function.cc:5300
void record_dynamic_alloc(tree decl_or_exp)
Definition function.cc:6659
void maybe_copy_prologue_epilogue_insn(rtx insn, rtx copy)
Definition function.cc:5754
int virtuals_instantiated
Definition function.cc:111
void free_after_parsing(struct function *f)
Definition function.cc:195
poly_int64 get_stack_dynamic_offset()
Definition function.cc:1951
void expand_function_start(tree subr)
Definition function.cc:5099
rtx assign_temp(tree type_or_decl, int memory_required, int dont_promote)
Definition function.cc:967
void init_dummy_function_start(void)
Definition function.cc:5010
void push_dummy_function(bool with_decl)
Definition function.cc:4979
rtx assign_stack_temp(machine_mode mode, poly_int64 size)
Definition function.cc:952
rtx assign_stack_local_1(machine_mode mode, poly_int64 size, int align, int kind)
Definition function.cc:378
int get_next_funcdef_no(void)
Definition function.cc:4811
poly_int64 get_frame_size(void)
Definition function.cc:227
void generate_setjmp_warnings(void)
Definition function.cc:4319
rtx get_hard_reg_initial_val(machine_mode mode, unsigned int regno)
Definition function.cc:1291
void diddle_return_value(void(*doit)(rtx, void *), void *arg)
Definition function.cc:5352
bool prologue_contains(const rtx_insn *insn)
Definition function.cc:5795
int get_last_funcdef_no(void)
Definition function.cc:4818
bool currently_expanding_function_start
Definition function.cc:5097
void number_blocks(tree fn)
Definition function.cc:4623
rtx has_hard_reg_initial_val(machine_mode mode, unsigned int regno)
Definition function.cc:1328
void pop_function_context(void)
Definition function.cc:179
void preserve_temp_slots(rtx x)
Definition function.cc:1155
void push_temp_slots(void)
Definition function.cc:1217
void init_temp_slots(void)
Definition function.cc:1235
void reposition_prologue_and_epilogue_notes(void)
Definition function.cc:6337
void set_cfun(struct function *new_cfun, bool force)
Definition function.cc:4729
void pop_cfun(void)
Definition function.cc:4792
bool frame_offset_overflow(poly_int64 offset, tree func)
Definition function.cc:240
void allocate_struct_function(tree fndecl, bool abstract_p)
Definition function.cc:4847
bool aggregate_value_p(const_tree exp, const_tree fntype)
Definition function.cc:2061
void instantiate_decl_rtl(rtx x)
Definition function.cc:1817
void types_used_by_var_decl_insert(tree type, tree var_decl)
Definition function.cc:6550
tree block_chainon(tree op1, tree op2)
Definition function.cc:4548
void free_temp_slots(void)
Definition function.cc:1195
void reorder_blocks(void)
Definition function.cc:4400
const char * function_name(const function *fn)
Definition function.cc:6454
void clear_block_marks(tree block)
Definition function.cc:4424
void record_final_call(tree callee, location_t location)
Definition function.cc:6650
rtx get_hard_reg_initial_reg(rtx reg)
Definition function.cc:1272
void expand_dummy_function_end(void)
Definition function.cc:5308
rtx get_arg_pointer_save_area(void)
Definition function.cc:5646
void push_function_decl(tree, bool=false)
Definition function.cc:4756
void stack_protect_epilogue(void)
Definition function.cc:5040
unsigned int spill_slot_alignment(machine_mode)
Definition function.cc:268
void push_function_context(void)
Definition function.cc:166
rtx get_hard_reg_initial_reg(rtx)
Definition function.cc:1272
stack_clash_probes
Definition function.h:633
@ NO_PROBE_NO_FRAME
Definition function.h:634
@ PROBE_INLINE
Definition function.h:636
@ NO_PROBE_SMALL_FRAME
Definition function.h:635
@ PROBE_LOOP
Definition function.h:637
void emit_initial_value_sets(void)
Definition function.cc:1344
const char * fndecl_name(tree)
Definition function.cc:6445
rtx assign_stack_temp(machine_mode, poly_int64)
Definition function.cc:952
bool frame_offset_overflow(poly_int64, tree)
Definition function.cc:240
vec< tree, va_gc > * types_used_by_cur_var_decl
Definition function.cc:136
void number_blocks(tree)
Definition function.cc:4623
void clobber_return_register(void)
Definition function.cc:5364
void preserve_temp_slots(rtx)
Definition function.cc:1155
rtx assign_stack_local_1(machine_mode, poly_int64, int, int)
Definition function.cc:378
void thread_prologue_and_epilogue_insns(void)
Definition function.cc:6095
void push_dummy_function(bool)
Definition function.cc:4979
void dump_stack_clash_frame_info(enum stack_clash_probes, bool)
Definition function.cc:5687
vec< edge > convert_jumps_to_returns(basic_block last_bb, bool simple_p, vec< edge > unconverted)
bool active_insn_between(rtx_insn *head, rtx_insn *tail)
bool prologue_epilogue_contains(const rtx_insn *)
Definition function.cc:5807
bool epilogue_contains(const rtx_insn *)
Definition function.cc:5801
void push_cfun(struct function *new_cfun)
Definition function.cc:4766
void pop_function_decl(void)
Definition function.cc:4800
void expand_function_start(tree)
Definition function.cc:5099
void set_cfun(struct function *new_cfun, bool force=false)
Definition function.cc:4729
void add_local_decl(struct function *fun, tree d)
Definition function.cc:7034
void pop_temp_slots(void)
Definition function.cc:1226
hash_table< used_type_hasher > * types_used_by_vars_hash
Definition function.cc:135
void allocate_struct_function(tree, bool)
Definition function.cc:4847
rtx assign_stack_temp_for_type(machine_mode, poly_int64, tree)
Definition function.cc:792
const char * current_function_name(void)
Definition function.cc:6462
void expand_function_end(void)
Definition function.cc:5395
bool use_register_for_decl(const_tree)
Definition function.cc:2161
bool prologue_contains(const rtx_insn *)
Definition function.cc:5795
int trampolines_created
Definition varasm.cc:8138
tree block_chainon(tree, tree)
Definition function.cc:4548
struct loops * loops_for_fn(struct function *fn)
Definition function.h:514
void emit_return_into_block(bool simple_p, basic_block bb)
void locate_and_pad_parm(machine_mode, tree, int, int, int, tree, struct args_size *, struct locate_and_pad_arg_data *)
Definition function.cc:4026
void pop_dummy_function(void)
Definition function.cc:5300
void record_dynamic_alloc(tree decl_or_exp)
Definition function.cc:6659
void diddle_return_value(void(*)(rtx, void *), void *)
Definition function.cc:5352
void set_return_jump_label(rtx_insn *)
Definition function.cc:5831
void init_function_start(tree)
Definition function.cc:5021
unsigned short get_new_clique(function *fn)
Definition function.h:531
rtx * regno_reg_rtx
Definition emit-rtl.cc:90
int virtuals_instantiated
Definition function.cc:111
void update_temp_slot_address(rtx, rtx)
Definition function.cc:1101
poly_int64 get_stack_dynamic_offset()
Definition function.cc:1951
void init_dummy_function_start(void)
Definition function.cc:5010
void record_epilogue_seq(rtx_insn *)
Definition function.cc:5823
void clear_block_marks(tree)
Definition function.cc:4424
void push_struct_function(tree fndecl, bool=false)
Definition function.cc:4926
basic_block emit_return_for_exit(edge exit_fallthru_edge, bool simple_p)
rtx get_hard_reg_initial_val(machine_mode, unsigned int)
Definition function.cc:1291
int get_next_funcdef_no(void)
Definition function.cc:4811
poly_int64 get_frame_size(void)
Definition function.cc:227
void record_prologue_seq(rtx_insn *)
Definition function.cc:5817
void generate_setjmp_warnings(void)
Definition function.cc:4319
void maybe_copy_prologue_epilogue_insn(rtx, rtx)
Definition function.cc:5754
void used_types_insert(tree)
Definition function.cc:6493
void free_after_compilation(struct function *)
Definition function.cc:205
int get_last_funcdef_no(void)
Definition function.cc:4818
bool initial_value_entry(int i, rtx *, rtx *)
Definition function.cc:1365
bool currently_expanding_function_start
Definition function.cc:5097
struct call_site_record_d * call_site_record
Definition function.h:134
void pop_function_context(void)
Definition function.cc:179
const char * function_name(const function *)
Definition function.cc:6454
gimple_seq gimplify_parameters(gimple_seq *)
Definition function.cc:3885
tree blocks_nreverse(tree)
Definition function.cc:4532
void set_loops_for_fn(struct function *fn, struct loops *loops)
Definition function.h:522
void push_temp_slots(void)
Definition function.cc:1217
void init_temp_slots(void)
Definition function.cc:1235
void reposition_prologue_and_epilogue_notes(void)
Definition function.cc:6337
void free_after_parsing(struct function *)
Definition function.cc:195
#define cfun
Definition function.h:478
void pop_cfun(void)
Definition function.cc:4792
rtx assign_stack_local(machine_mode, poly_int64, int)
Definition function.cc:545
void instantiate_decl_rtl(rtx x)
Definition function.cc:1817
void types_used_by_var_decl_insert(tree type, tree var_decl)
Definition function.cc:6550
rtx has_hard_reg_initial_val(machine_mode, unsigned int)
Definition function.cc:1328
void free_temp_slots(void)
Definition function.cc:1195
rtx assign_temp(tree, int, int)
Definition function.cc:967
void reorder_blocks(void)
Definition function.cc:4400
void record_final_call(tree callee, location_t location)
Definition function.cc:6650
bool aggregate_value_p(const_tree, const_tree)
Definition function.cc:2061
void expand_dummy_function_end(void)
Definition function.cc:5308
i
Definition poly-int.h:776
rtx offset
Definition postreload.cc:691
Definition function.h:557
poly_int64 constant
Definition function.h:558
tree var
Definition function.h:559
Definition basic-block.h:117
Definition function.h:198
location_t location
Definition function.h:199
tree decl
Definition function.h:200
Definition function.h:205
location_t location
Definition function.h:206
char const * name
Definition function.h:207
Definition dwarf2out.h:74
unsigned char * regno_pointer_align
Definition function.h:75
int x_first_label_num
Definition function.h:44
int x_cur_debug_insn_uid
Definition function.h:64
void ensure_regno_capacity()
Definition emit-rtl.cc:1223
int regno_pointer_align_length
Definition function.h:70
int x_reg_rtx_no
Definition function.h:41
struct sequence_stack seq
Definition function.h:56
int x_cur_insn_uid
Definition function.h:60
poly_int64 x_pending_stack_adjust
Definition function.h:97
vec< rtx_insn *, va_gc > * x_forced_labels
Definition function.h:131
poly_int64 x_stack_pointer_delta
Definition function.h:120
rtx x_saveregs_value
Definition function.h:125
rtx x_apply_args_value
Definition function.h:128
int x_inhibit_defer_pop
Definition function.h:114
Definition function.h:173
const char * cold_section_label
Definition function.h:179
const char * hot_section_label
Definition function.h:178
const char * hot_section_end_label
Definition function.h:180
const char * cold_section_end_label
Definition function.h:181
Definition function.h:249
struct dw_fde_node * fde
Definition function.h:308
struct eh_status * eh
Definition function.h:250
struct control_flow_graph * cfg
Definition function.h:253
tree nonlocal_goto_save_area
Definition function.h:289
unsigned int pending_TODOs
Definition function.h:343
unsigned int has_unroll
Definition function.h:437
vec< tree, va_gc > * local_decls
Definition function.h:292
unsigned int is_thunk
Definition function.h:420
unsigned int has_musttail
Definition function.h:434
struct language_function * language
Definition function.h:300
unsigned int returns_pcc_struct
Definition function.h:410
int debug_marker_count
Definition function.h:323
struct loops * x_current_loops
Definition function.h:262
unsigned int can_delete_dead_exceptions
Definition function.h:399
unsigned int has_force_vectorize_loops
Definition function.h:424
struct gimple_df * gimple_df
Definition function.h:259
tree static_chain_decl
Definition function.h:284
tree decl
Definition function.h:280
unsigned int has_nonlocal_label
Definition function.h:376
unsigned int cannot_be_copied_set
Definition function.h:385
unsigned int returns_struct
Definition function.h:406
gimple_seq gimple_body
Definition function.h:256
unsigned int has_simduid_loops
Definition function.h:428
unsigned int stdarg
Definition function.h:388
unsigned int has_forced_label_in_static
Definition function.h:380
unsigned int va_list_fpr_size
Definition function.h:362
unsigned int calls_alloca
Definition function.h:369
int last_stmt_uid
Definition function.h:317
unsigned int coroutine_component
Definition function.h:444
unsigned int curr_properties
Definition function.h:335
unsigned int assume_function
Definition function.h:451
unsigned int va_list_gpr_size
Definition function.h:358
const char * cannot_be_copied_reason
Definition function.h:348
struct machine_function * machine
Definition function.h:297
unsigned int has_local_explicit_reg_vars
Definition function.h:414
unsigned int can_throw_non_call_exceptions
Definition function.h:395
hash_set< tree > * used_types_hash
Definition function.h:303
unsigned int after_inlining
Definition function.h:390
unsigned int debug_nonbind_markers
Definition function.h:441
int funcdef_no
Definition function.h:326
unsigned int always_inline_functions_inlined
Definition function.h:391
class stack_usage * su
Definition function.h:268
unsigned int calls_setjmp
Definition function.h:365
hash_map< gcond *, unsigned > * cond_uids
Definition function.h:275
unsigned short last_clique
Definition function.h:351
unsigned int has_omp_target
Definition function.h:447
location_t function_start_locus
Definition function.h:329
unsigned int calls_eh_return
Definition function.h:372
unsigned int tail_call_marked
Definition function.h:431
location_t function_end_locus
Definition function.h:332
char * pass_startwith
Definition function.h:265
htab_t value_histograms
Definition function.h:271
unsigned int last_verified
Definition function.h:336
range_query * x_range_query
Definition function.h:314
Definition hash-traits.h:321
Definition gimple-ssa.h:72
Definition collect2.cc:175
Definition function.h:565
struct args_size size
Definition function.h:569
struct args_size offset
Definition function.h:571
unsigned int boundary
Definition function.h:581
struct args_size slot_offset
Definition function.h:574
pad_direction where_pad
Definition function.h:579
struct args_size alignment_pad
Definition function.h:577
Definition function.h:137
vec< call_site_record, va_gc > * call_site_record_v[2]
Definition function.h:147
rtx_code_label * ehr_label
Definition function.h:140
rtx sjlj_fc
Definition function.h:142
rtx_insn * sjlj_exit_after
Definition function.h:143
rtx ehr_stackadj
Definition function.h:138
rtx ehr_handler
Definition function.h:139
vec< uchar, va_gc > * action_record_data
Definition function.h:145
Definition varasm.cc:3978
struct sequence_stack * next
Definition function.h:33
rtx_insn * last
Definition function.h:32
rtx_insn * first
Definition function.h:31
Definition gengtype.h:252
Definition function.h:486
tree type
Definition function.h:487
tree var_decl
Definition function.h:488
Definition function.h:492
static bool equal(types_used_by_vars_entry *, types_used_by_vars_entry *)
Definition function.cc:6541
static hashval_t hash(types_used_by_vars_entry *)
Definition function.cc:6533
Definition function.h:162
struct rtx_constant_pool * pool
Definition function.h:164
unsigned int deferred_constants
Definition function.h:168
#define NULL
Definition system.h:50
#define gcc_checking_assert(EXPR)
Definition system.h:821