diff options
author | obrien <obrien@FreeBSD.org> | 1999-08-26 09:30:50 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 1999-08-26 09:30:50 +0000 |
commit | 0bedf4fb30066e5e1d4342a1d3914dae7d37cba7 (patch) | |
tree | 68d8110b41afd0ebbf39167b1a4918eea667a7c5 /contrib/gcc/function.h | |
parent | d4db5fb866b7ad5216abd5047774a3973b9901a9 (diff) | |
download | FreeBSD-src-0bedf4fb30066e5e1d4342a1d3914dae7d37cba7.zip FreeBSD-src-0bedf4fb30066e5e1d4342a1d3914dae7d37cba7.tar.gz |
Virgin import of gcc from EGCS 1.1.2
Diffstat (limited to 'contrib/gcc/function.h')
-rw-r--r-- | contrib/gcc/function.h | 61 |
1 files changed, 50 insertions, 11 deletions
diff --git a/contrib/gcc/function.h b/contrib/gcc/function.h index 24b4be2..0382a4e 100644 --- a/contrib/gcc/function.h +++ b/contrib/gcc/function.h @@ -1,5 +1,5 @@ /* Structure for saving state for a nested function. - Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. + Copyright (C) 1989, 92-97, 1998 Free Software Foundation, Inc. This file is part of GNU CC. @@ -19,11 +19,13 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef NULL_TREE -#define tree int * +#if !defined(NULL_TREE) && !defined(tree) +typedef union union_node *_function_tree; +#define tree _function_tree #endif -#ifndef GET_CODE -#define rtx int * +#if !defined(NULL_RTX) && !defined(rtx) +typedef struct rtx_def *_function_rtx; +#define rtx _function_rtx #endif struct var_refs_queue @@ -70,6 +72,7 @@ struct function int pops_args; int returns_struct; int returns_pcc_struct; + int returns_pointer; int needs_context; int calls_setjmp; int calls_longjmp; @@ -77,6 +80,7 @@ struct function int has_nonlocal_label; int has_nonlocal_goto; int contains_functions; + int is_thunk; rtx nonlocal_goto_handler_slot; rtx nonlocal_goto_stack_level; tree nonlocal_labels; @@ -94,10 +98,11 @@ struct function rtx save_expr_regs; rtx stack_slot_list; rtx parm_birth_insn; - int frame_offset; + HOST_WIDE_INT frame_offset; rtx tail_recursion_label; rtx tail_recursion_reentry; rtx internal_arg_pointer; + char *cannot_inline; rtx arg_pointer_save_area; tree rtl_expr_chain; rtx last_parm_insn; @@ -106,9 +111,12 @@ struct function int function_call_count; struct temp_slot *temp_slots; int temp_slot_level; + int target_temp_slot_level; + int var_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; + CUMULATIVE_ARGS args_info; /* For stmt.c */ struct nesting *block_stack; @@ -126,10 +134,20 @@ struct function int emit_lineno; struct goto_fixup *goto_fixup_chain; + /* For exception handling information. */ + struct eh_stack ehstack; + struct eh_stack catchstack; + struct eh_queue ehqueue; + rtx catch_clauses; + struct label_node *false_label_stack; + struct label_node *caught_return_label_stack; + tree protect_list; + rtx ehc; + /* For expr.c. */ + rtx pending_chain; int pending_stack_adjust; int inhibit_defer_pop; - tree cleanups_this_call; rtx saveregs_value; rtx apply_args_value; rtx forced_labels; @@ -145,6 +163,7 @@ struct function int last_linenum; char *last_filename; char *regno_pointer_flag; + char *regno_pointer_align; int regno_pointer_flag_length; rtx *regno_reg_rtx; @@ -187,6 +206,7 @@ struct function struct pool_sym **const_rtx_sym_hash_table; struct pool_constant *first_pool, *last_pool; int pool_offset; + rtx const_double_chain; }; /* The FUNCTION_DECL for an inline function currently being expanded. */ @@ -213,15 +233,34 @@ extern struct function *outer_function_chain; the index of that block in the vector. */ extern tree *identify_blocks PROTO((tree, rtx)); +/* Return size needed for stack frame based on slots so far allocated. + This size counts from zero. It is not rounded to STACK_BOUNDARY; + the caller may have to do that. */ +extern HOST_WIDE_INT get_frame_size PROTO((void)); + /* These variables hold pointers to functions to save and restore machine-specific data, in push_function_context and pop_function_context. */ -extern void (*save_machine_status) (); -extern void (*restore_machine_status) (); +extern void (*save_machine_status) PROTO((struct function *)); +extern void (*restore_machine_status) PROTO((struct function *)); -/* Save and restore varasm.c status for a nested function. */ -extern void save_varasm_status PROTO((struct function *)); +/* Save and restore status information for a nested function. */ +extern void save_tree_status PROTO((struct function *, tree)); +extern void restore_tree_status PROTO((struct function *, tree)); +extern void save_varasm_status PROTO((struct function *, tree)); extern void restore_varasm_status PROTO((struct function *)); +extern void save_eh_status PROTO((struct function *)); +extern void restore_eh_status PROTO((struct function *)); +extern void save_stmt_status PROTO((struct function *)); +extern void restore_stmt_status PROTO((struct function *)); +extern void save_expr_status PROTO((struct function *)); +extern void restore_expr_status PROTO((struct function *)); +extern void save_emit_status PROTO((struct function *)); +extern void restore_emit_status PROTO((struct function *)); +extern void save_storage_status PROTO((struct function *)); +extern void restore_storage_status PROTO((struct function *)); + +extern rtx get_first_block_beg PROTO((void)); #ifdef rtx #undef rtx |