20 #ifndef GCC_FUNCTION_H
21 #define GCC_FUNCTION_H
48 int x_first_label_num;
70 int x_cur_debug_insn_uid;
76 int regno_pointer_align_length;
81 unsigned char * GTY((skip)) regno_pointer_align;
96 #define reg_rtx_no (crtl->emit.x_reg_rtx_no)
97 #define seq_stack (crtl->emit.sequence_stack)
99 #define REGNO_POINTER_ALIGN(REGNO) (crtl->emit.regno_pointer_align[REGNO])
104 int x_pending_stack_adjust;
121 int x_inhibit_defer_pop;
127 int x_stack_pointer_delta;
132 rtx x_saveregs_value;
135 rtx x_apply_args_value;
157 #define pending_stack_adjust (crtl->expr.x_pending_stack_adjust)
158 #define inhibit_defer_pop (crtl->expr.x_inhibit_defer_pop)
159 #define saveregs_value (crtl->expr.x_saveregs_value)
160 #define apply_args_value (crtl->expr.x_apply_args_value)
161 #define forced_labels (crtl->expr.x_forced_labels)
162 #define stack_pointer_delta (crtl->expr.x_stack_pointer_delta)
180 unsigned int deferred_constants;
198 int pretend_args_size;
206 CUMULATIVE_ARGS info;
209 rtx internal_arg_pointer;
218 const char *hot_section_label;
219 const char *cold_section_label;
220 const char *hot_section_end_label;
221 const char *cold_section_end_label;
248 int outgoing_args_size;
265 tree stack_protect_guard;
269 rtx x_nonlocal_goto_handler_labels;
279 rtx x_naked_return_label;
289 rtx x_stack_check_probe_note;
295 rtx x_arg_pointer_save_area;
306 rtx x_parm_birth_insn;
315 int x_temp_slot_level;
319 unsigned int stack_alignment_needed;
323 unsigned int preferred_stack_boundary;
326 unsigned int parm_stack_boundary;
329 unsigned int max_used_stack_slot_alignment;
338 unsigned int stack_alignment_estimated;
344 bool accesses_prior_frames;
347 bool calls_eh_return;
351 bool saves_all_registers;
355 bool has_nonlocal_goto;
358 bool has_asm_statement;
365 bool all_throwers_are_sibcalls;
375 bool uses_const_pool;
378 bool uses_pic_offset_table;
387 bool arg_pointer_save_area_init;
392 bool frame_pointer_needed;
395 bool maybe_hot_insn_p;
402 bool stack_realign_needed;
407 bool stack_realign_tried;
416 bool stack_realign_processed;
420 bool stack_realign_finalized;
423 bool dbr_scheduled_p;
436 bool sp_is_unchanging;
447 bool uses_only_leaf_regs;
452 bool has_bb_partition;
456 bool bb_reorder_complete;
465 #define return_label (crtl->x_return_label)
466 #define naked_return_label (crtl->x_naked_return_label)
467 #define stack_slot_list (crtl->x_stack_slot_list)
468 #define parm_birth_insn (crtl->x_parm_birth_insn)
469 #define frame_offset (crtl->x_frame_offset)
470 #define stack_check_probe_note (crtl->x_stack_check_probe_note)
471 #define arg_pointer_save_area (crtl->x_arg_pointer_save_area)
472 #define used_temp_slots (crtl->x_used_temp_slots)
473 #define avail_temp_slots (crtl->x_avail_temp_slots)
474 #define temp_slot_level (crtl->x_temp_slot_level)
475 #define nonlocal_goto_handler_labels (crtl->x_nonlocal_goto_handler_labels)
476 #define frame_pointer_needed (crtl->frame_pointer_needed)
477 #define stack_realign_fp (crtl->stack_realign_needed && !crtl->need_drap)
478 #define stack_realign_drap (crtl->stack_realign_needed && crtl->need_drap)
485 #define crtl (&x_rtl)
498 int pushed_stack_size;
502 unsigned int has_unbounded_dynamic_stack_size : 1;
505 #define current_function_static_stack_size (cfun->su->static_stack_size)
506 #define current_function_dynamic_stack_size (cfun->su->dynamic_stack_size)
507 #define current_function_pushed_stack_size (cfun->su->pushed_stack_size)
508 #define current_function_has_unbounded_dynamic_stack_size \
509 (cfun->su->has_unbounded_dynamic_stack_size)
510 #define current_function_allocates_dynamic_stack_space \
511 (current_function_dynamic_stack_size != 0 \
512 || current_function_has_unbounded_dynamic_stack_size)
530 struct loops *x_current_loops;
536 htab_t GTY((skip)) value_histograms;
545 tree static_chain_decl;
550 tree nonlocal_goto_save_area;
556 tree cilk_frame_decl;
561 struct machine_function * GTY ((maybe_undef)) machine;
564 struct language_function * language;
567 htab_t GTY ((param_is (union tree_node))) used_types_hash;
587 unsigned int curr_properties;
588 unsigned int last_verified;
593 const
char * GTY((skip)) cannot_be_copied_reason;
600 unsigned int va_list_gpr_size : 8;
604 unsigned int va_list_fpr_size : 8;
607 unsigned int calls_setjmp : 1;
611 unsigned int calls_alloca : 1;
614 unsigned int is_cilk_function : 1;
617 unsigned int calls_cilk_spawn : 1;
621 unsigned int has_nonlocal_label : 1;
626 unsigned int cannot_be_copied_set : 1;
629 unsigned int stdarg : 1;
631 unsigned int after_inlining : 1;
632 unsigned int always_inline_functions_inlined : 1;
636 unsigned int can_throw_non_call_exceptions : 1;
640 unsigned int can_delete_dead_exceptions : 1;
647 unsigned int returns_struct : 1;
651 unsigned int returns_pcc_struct : 1;
655 unsigned int has_local_explicit_reg_vars : 1;
661 unsigned int is_thunk : 1;
665 unsigned int has_force_vect_loops : 1;
669 unsigned int has_simduid_loops : 1;
680 #define FOR_EACH_LOCAL_DECL(FUN, I, D) \
681 FOR_EACH_VEC_SAFE_ELT_REVERSE ((FUN)->local_decls, I, D)
685 #define VA_LIST_MAX_GPR_SIZE 255
686 #define VA_LIST_MAX_FPR_SIZE 255
694 #define cfun (cfun + 0)
731 inline struct
loops *
734 return fn->x_current_loops;
742 gcc_checking_assert (fn->x_current_loops == NULL || loops == NULL);
743 fn->x_current_loops = loops;
747 #define current_function_funcdef_no (cfun->funcdef_no)
749 #define current_loops (cfun->x_current_loops)
750 #define dom_computed (cfun->cfg->x_dom_computed)
751 #define n_bbs_in_dom_tree (cfun->cfg->x_n_bbs_in_dom_tree)
752 #define VALUE_HISTOGRAMS(fun) (fun)->value_histograms
777 extern struct machine_function * (*init_machine_status) (void);
809 #ifdef HAVE_simple_return