/* Structure for saving state for a nested function.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+ 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
/* 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. */
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;
/* 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;
int no_debugging_symbols;
rtvec original_arg_vector;
tree original_decl_initial;
+
/* Highest label number in current function. */
int inl_max_label_num;
/* Function sequence number for profiling, debugging, etc. */
int funcdef_no;
+ /* For flow.c. */
+
+ /* Highest loop depth seen so far in loop analysis. Used in flow.c
+ for the "failure strategy" when doing liveness analysis starting
+ with non-empty initial sets. */
+ int max_loop_depth;
+
/* For md files. */
/* 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. */
/* Nonzero if function being compiled can call setjmp. */
unsigned int calls_setjmp : 1;
- /* Nonzero if function being compiled can call longjmp. */
- unsigned int calls_longjmp : 1;
-
/* Nonzero if function being compiled can call alloca,
either as a subroutine or builtin. */
unsigned int calls_alloca : 1;
/* Nonzero if function being compiled contains nested functions. */
unsigned int contains_functions : 1;
- /* Nonzero if the function being compiled issues a computed jump. */
- unsigned int has_computed_jump : 1;
-
/* Nonzero if the current function is a thunk, i.e., a lightweight
function implemented by the output_mi_thunk hook) that just
adjusts one of its arguments and forwards to another
#define current_function_returns_pointer (cfun->returns_pointer)
#define current_function_calls_setjmp (cfun->calls_setjmp)
#define current_function_calls_alloca (cfun->calls_alloca)
-#define current_function_calls_longjmp (cfun->calls_longjmp)
#define current_function_calls_eh_return (cfun->calls_eh_return)
-#define current_function_has_computed_jump (cfun->has_computed_jump)
#define current_function_contains_functions (cfun->contains_functions)
#define current_function_is_thunk (cfun->is_thunk)
#define current_function_args_info (cfun->args_info)
#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 struct machine_function * (*init_machine_status) (void);
/* Save and restore status information for a nested function. */
-extern void restore_emit_status (struct function *);
extern void free_after_parsing (struct function *);
extern void free_after_compilation (struct function *);
extern void do_warn_unused_parameter (tree);
+extern bool pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode,
+ tree, bool);
+extern bool reference_callee_copied (CUMULATIVE_ARGS *, enum machine_mode,
+ tree, bool);
+
#endif /* GCC_FUNCTION_H */