/* First and last insns in the chain of the saved sequence. */
rtx first;
rtx last;
- tree sequence_rtl_expr;
struct sequence_stack *next;
};
/* The ends of the doubly-linked chain of rtl for the current function.
Both are reset to null at the start of rtl generation for the function.
- start_sequence saves both of these on `sequence_stack' along with
- `sequence_rtl_expr' and then starts a new, nested sequence of insns. */
+ start_sequence saves both of these on `sequence_stack' and then starts
+ a new, nested sequence of insns. */
rtx x_first_insn;
rtx x_last_insn;
- /* RTL_EXPR within which the current sequence will be placed. Use to
- prevent reuse of any temporaries within the sequence until after the
- RTL_EXPR is emitted. */
- tree sequence_rtl_expr;
-
/* Stack of pending (incomplete) sequences saved by `start_sequence'.
Each element describes one pending sequence.
The main insn-chain is saved in the last element of the chain,
regno_pointer_align;
/* Indexed by pseudo register number, gives the rtx for that pseudo.
- Allocated in parallel with regno_pointer_align.
-
- Note MEM expressions can appear in this array due to the actions
- of put_var_into_stack. */
+ Allocated in parallel with regno_pointer_align. */
rtx * GTY ((length ("%h.x_reg_rtx_no"))) x_regno_reg_rtx;
};
/* For backward compatibility... eventually these should all go away. */
#define reg_rtx_no (cfun->emit->x_reg_rtx_no)
-#define seq_rtl_expr (cfun->emit->sequence_rtl_expr)
#define regno_reg_rtx (cfun->emit->x_regno_reg_rtx)
#define seq_stack (cfun->emit->sequence_stack)
/* List of labels that must never be deleted. */
rtx x_forced_labels;
-
- /* Postincrements that still need to be expanded. */
- rtx x_pending_chain;
};
#define pending_stack_adjust (cfun->expr->x_pending_stack_adjust)
#define saveregs_value (cfun->expr->x_saveregs_value)
#define apply_args_value (cfun->expr->x_apply_args_value)
#define forced_labels (cfun->expr->x_forced_labels)
-#define pending_chain (cfun->expr->x_pending_chain)
#define stack_pointer_delta (cfun->expr->x_stack_pointer_delta)
/* This structure can save all the important global and static variables
struct function GTY(())
{
struct eh_status *eh;
- struct stmt_status *stmt;
struct expr_status *expr;
struct emit_status *emit;
struct varasm_status *varasm;
inlining */
tree saved_tree;
tree saved_args;
+ tree saved_static_chain_decl;
/* For function.c. */
on machines which require execution of the epilogue on all returns. */
rtx x_naked_return_label;
- /* List (chain of EXPR_LISTs) of pseudo-regs of SAVE_EXPRs.
- So we can mark them all live at the end of the function, if nonopt. */
- rtx x_save_expr_regs;
-
/* List (chain of EXPR_LISTs) of all stack slots in this function.
Made for the sake of unshare_all_rtl. */
rtx x_stack_slot_list;
- /* Chain of all RTL_EXPRs that have insns in them. */
- tree x_rtl_expr_chain;
-
/* Place after which to insert the tail_recursion_label if we need one. */
rtx x_tail_recursion_reentry;
If stack grows up, this is the address for the next slot. */
HOST_WIDE_INT x_frame_offset;
- /* A VAR_DECL that should contain the static chain for this function.
+ /* A PARM_DECL that should contain the static chain for this function.
It will be initialized at the beginning of the function. */
tree static_chain_decl;
/* Insn after which register parms and SAVE_EXPRs are born, if nonopt. */
rtx x_parm_birth_insn;
- /* 1 + last pseudo register number possibly used for loading a copy
- of a parameter of this function. */
- unsigned int x_max_parm_reg;
-
- /* Vector indexed by REGNO, containing location on stack in which
- to put the parm which is nominally in pseudo register REGNO,
- if we discover that that parm must go in the stack. The highest
- element in this vector is one less than MAX_PARM_REG, above. */
- rtx * GTY ((length ("%h.x_max_parm_reg"))) x_parm_reg_stack_loc;
-
/* List of all used temporaries allocated, by level. */
struct varray_head_tag * GTY((param_is (struct temp_slot))) x_used_temp_slots;
/* Current nesting level for temporaries. */
int x_temp_slot_level;
- /* Current nesting level for variables in a block. */
- int x_var_temp_slot_level;
-
- /* When temporaries are created by TARGET_EXPRs, they are created at
- this level of temp_slot_level, so that they can remain allocated
- until no longer needed. CLEANUP_POINT_EXPRs define the lifetime
- of TARGET_EXPRs. */
- int x_target_temp_slot_level;
-
/* This slot is initialized as 0 and is added to
during the nested function. */
struct var_refs_queue *fixup_var_refs_queue;
/* tm.h can use this to store whatever it likes. */
struct machine_function * GTY ((maybe_undef)) machine;
/* The largest alignment of slot allocated on the stack. */
- int stack_alignment_needed;
+ unsigned int stack_alignment_needed;
/* Preferred alignment of the end of stack frame. */
- int preferred_stack_boundary;
+ unsigned int preferred_stack_boundary;
/* Set when the call to function itself has been emit. */
bool recursive_call_emit;
/* Set when the tail call has been produced. */
#define current_function_has_nonlocal_label (cfun->has_nonlocal_label)
#define current_function_has_nonlocal_goto (cfun->has_nonlocal_goto)
-#define max_parm_reg (cfun->x_max_parm_reg)
-#define parm_reg_stack_loc (cfun->x_parm_reg_stack_loc)
#define return_label (cfun->x_return_label)
#define naked_return_label (cfun->x_naked_return_label)
-#define save_expr_regs (cfun->x_save_expr_regs)
#define stack_slot_list (cfun->x_stack_slot_list)
#define parm_birth_insn (cfun->x_parm_birth_insn)
#define frame_offset (cfun->x_frame_offset)
#define tail_recursion_reentry (cfun->x_tail_recursion_reentry)
#define arg_pointer_save_area (cfun->x_arg_pointer_save_area)
-#define rtl_expr_chain (cfun->x_rtl_expr_chain)
#define used_temp_slots (cfun->x_used_temp_slots)
#define avail_temp_slots (cfun->x_avail_temp_slots)
#define temp_slot_level (cfun->x_temp_slot_level)
-#define target_temp_slot_level (cfun->x_target_temp_slot_level)
-#define var_temp_slot_level (cfun->x_var_temp_slot_level)
#define nonlocal_labels (cfun->x_nonlocal_labels)
#define nonlocal_goto_handler_labels (cfun->x_nonlocal_goto_handler_labels)
extern void do_warn_unused_parameter (tree);
+extern bool pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode,
+ tree, bool);
+
#endif /* GCC_FUNCTION_H */