function.h (struct function): Move all boolean valued fields to single bit fields at the end of the struct.
* function.h (struct function): Move all boolean valued fields to single bit fields at the end of the struct. From-SVN: r40911
This commit is contained in:
parent
2f2ee4bba2
commit
89996b6e7c
2 changed files with 92 additions and 83 deletions
|
@ -1,5 +1,8 @@
|
||||||
2001-03-27 Richard Henderson <rth@redhat.com>
|
2001-03-27 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* function.h (struct function): Move all boolean valued fields
|
||||||
|
to single bit fields at the end of the struct.
|
||||||
|
|
||||||
* bb-reorder.c, dwarf2out.c, except.c, except.h, flow.c,
|
* bb-reorder.c, dwarf2out.c, except.c, except.h, flow.c,
|
||||||
jump.c, toplev.c:
|
jump.c, toplev.c:
|
||||||
Rename asynchronous_exceptions to flag_non_call_exceptions.
|
Rename asynchronous_exceptions to flag_non_call_exceptions.
|
||||||
|
|
172
gcc/function.h
172
gcc/function.h
|
@ -191,6 +191,7 @@ struct function
|
||||||
|
|
||||||
/* Name of this function. */
|
/* Name of this function. */
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
/* Points to the FUNCTION_DECL of this function. */
|
/* Points to the FUNCTION_DECL of this function. */
|
||||||
tree decl;
|
tree decl;
|
||||||
|
|
||||||
|
@ -199,50 +200,6 @@ struct function
|
||||||
May affect compilation of return insn or of function epilogue. */
|
May affect compilation of return insn or of function epilogue. */
|
||||||
int pops_args;
|
int pops_args;
|
||||||
|
|
||||||
/* Nonzero if function being compiled needs to be given an address
|
|
||||||
where the value should be stored. */
|
|
||||||
int returns_struct;
|
|
||||||
|
|
||||||
/* Nonzero if function being compiled needs to
|
|
||||||
return the address of where it has put a structure value. */
|
|
||||||
int returns_pcc_struct;
|
|
||||||
|
|
||||||
/* Nonzero if the current function returns a pointer type. */
|
|
||||||
int returns_pointer;
|
|
||||||
|
|
||||||
/* Nonzero if function being compiled needs to be passed a static chain. */
|
|
||||||
int needs_context;
|
|
||||||
|
|
||||||
/* Nonzero if function being compiled can call setjmp. */
|
|
||||||
int calls_setjmp;
|
|
||||||
|
|
||||||
/* Nonzero if function being compiled can call longjmp. */
|
|
||||||
int calls_longjmp;
|
|
||||||
|
|
||||||
/* Nonzero if function being compiled can call alloca,
|
|
||||||
either as a subroutine or builtin. */
|
|
||||||
int calls_alloca;
|
|
||||||
|
|
||||||
/* Nonzero if function being compiled receives nonlocal gotos
|
|
||||||
from nested functions. */
|
|
||||||
|
|
||||||
int has_nonlocal_label;
|
|
||||||
|
|
||||||
/* Nonzero if function being compiled has nonlocal gotos to parent
|
|
||||||
function. */
|
|
||||||
int has_nonlocal_goto;
|
|
||||||
|
|
||||||
/* Nonzero if function being compiled contains nested functions. */
|
|
||||||
int contains_functions;
|
|
||||||
|
|
||||||
/* Nonzero if the function being compiled issues a computed jump. */
|
|
||||||
int has_computed_jump;
|
|
||||||
|
|
||||||
/* Nonzero if the current function is a thunk (a lightweight function that
|
|
||||||
just adjusts one of its arguments and forwards to another function), so
|
|
||||||
we should try to cut corners where we can. */
|
|
||||||
int is_thunk;
|
|
||||||
|
|
||||||
/* If function's args have a fixed size, this is that size, in bytes.
|
/* If function's args have a fixed size, this is that size, in bytes.
|
||||||
Otherwise, it is -1.
|
Otherwise, it is -1.
|
||||||
May affect compilation of return insn or of function epilogue. */
|
May affect compilation of return insn or of function epilogue. */
|
||||||
|
@ -261,14 +218,6 @@ struct function
|
||||||
anonymous arg can be found, if there is one. */
|
anonymous arg can be found, if there is one. */
|
||||||
rtx arg_offset_rtx;
|
rtx arg_offset_rtx;
|
||||||
|
|
||||||
/* Nonzero if current function uses varargs.h or equivalent.
|
|
||||||
Zero for functions that use stdarg.h. */
|
|
||||||
int varargs;
|
|
||||||
|
|
||||||
/* Nonzero if current function uses stdarg.h or equivalent.
|
|
||||||
Zero for functions that use varargs.h. */
|
|
||||||
int stdarg;
|
|
||||||
|
|
||||||
/* Quantities of various kinds of registers
|
/* Quantities of various kinds of registers
|
||||||
used for the current function's args. */
|
used for the current function's args. */
|
||||||
CUMULATIVE_ARGS args_info;
|
CUMULATIVE_ARGS args_info;
|
||||||
|
@ -286,35 +235,9 @@ struct function
|
||||||
inline. */
|
inline. */
|
||||||
const char *cannot_inline;
|
const char *cannot_inline;
|
||||||
|
|
||||||
/* Nonzero if instrumentation calls for function entry and exit should be
|
|
||||||
generated. */
|
|
||||||
int instrument_entry_exit;
|
|
||||||
|
|
||||||
/* Nonzero if memory access checking be enabled in the current function. */
|
|
||||||
int check_memory_usage;
|
|
||||||
|
|
||||||
/* Nonzero if stack limit checking should be enabled in the current
|
|
||||||
function. */
|
|
||||||
int limit_stack;
|
|
||||||
|
|
||||||
/* Number of function calls seen so far in current function. */
|
/* Number of function calls seen so far in current function. */
|
||||||
int x_function_call_count;
|
int x_function_call_count;
|
||||||
|
|
||||||
/* Nonzero if this function is being processed in function-at-a-time
|
|
||||||
mode. In other words, if all tree structure for this function,
|
|
||||||
including the BLOCK tree, is created before RTL generation
|
|
||||||
commences. */
|
|
||||||
int x_whole_function_mode_p;
|
|
||||||
|
|
||||||
/* Nonzero if the back-end should not keep track of expressions that
|
|
||||||
determine the size of variable-sized objects. Normally, such
|
|
||||||
expressions are saved away, and then expanded when the next
|
|
||||||
function is started. For example, if a parameter has a
|
|
||||||
variable-sized type, then the size of the parameter is computed
|
|
||||||
when the function body is entered. However, some front-ends do
|
|
||||||
not desire this behavior. */
|
|
||||||
int x_dont_save_pending_sizes_p;
|
|
||||||
|
|
||||||
/* List (chain of TREE_LIST) of LABEL_DECLs for all nonlocal labels
|
/* List (chain of TREE_LIST) of LABEL_DECLs for all nonlocal labels
|
||||||
(labels to which there can be nonlocal gotos from nested functions)
|
(labels to which there can be nonlocal gotos from nested functions)
|
||||||
in this function. */
|
in this function. */
|
||||||
|
@ -442,13 +365,8 @@ struct function
|
||||||
/* Highest label number in current function. */
|
/* Highest label number in current function. */
|
||||||
int inl_max_label_num;
|
int inl_max_label_num;
|
||||||
|
|
||||||
/* Nonzero if the current function uses the constant pool. */
|
|
||||||
int uses_const_pool;
|
|
||||||
|
|
||||||
/* For md files. */
|
/* For md files. */
|
||||||
|
|
||||||
/* Nonzero if the current function uses pic_offset_table_rtx. */
|
|
||||||
int uses_pic_offset_table;
|
|
||||||
/* tm.h can use this to store whatever it likes. */
|
/* tm.h can use this to store whatever it likes. */
|
||||||
struct machine_function *machine;
|
struct machine_function *machine;
|
||||||
/* The largest alignment of slot allocated on the stack. */
|
/* The largest alignment of slot allocated on the stack. */
|
||||||
|
@ -464,6 +382,94 @@ struct function
|
||||||
/* If some insns can be deferred to the delay slots of the epilogue, the
|
/* If some insns can be deferred to the delay slots of the epilogue, the
|
||||||
delay list for them is recorded here. */
|
delay list for them is recorded here. */
|
||||||
rtx epilogue_delay_list;
|
rtx epilogue_delay_list;
|
||||||
|
|
||||||
|
/* Collected bit flags. */
|
||||||
|
|
||||||
|
/* Nonzero if function being compiled needs to be given an address
|
||||||
|
where the value should be stored. */
|
||||||
|
unsigned int returns_struct : 1;
|
||||||
|
|
||||||
|
/* Nonzero if function being compiled needs to
|
||||||
|
return the address of where it has put a structure value. */
|
||||||
|
unsigned int returns_pcc_struct : 1;
|
||||||
|
|
||||||
|
/* Nonzero if the current function returns a pointer type. */
|
||||||
|
unsigned int returns_pointer : 1;
|
||||||
|
|
||||||
|
/* Nonzero if function being compiled needs to be passed a static chain. */
|
||||||
|
unsigned int needs_context : 1;
|
||||||
|
|
||||||
|
/* 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 receives nonlocal gotos
|
||||||
|
from nested functions. */
|
||||||
|
unsigned int has_nonlocal_label : 1;
|
||||||
|
|
||||||
|
/* Nonzero if function being compiled has nonlocal gotos to parent
|
||||||
|
function. */
|
||||||
|
unsigned int has_nonlocal_goto : 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 (a lightweight function that
|
||||||
|
just adjusts one of its arguments and forwards to another function), so
|
||||||
|
we should try to cut corners where we can. */
|
||||||
|
unsigned int is_thunk : 1;
|
||||||
|
|
||||||
|
/* Nonzero if instrumentation calls for function entry and exit should be
|
||||||
|
generated. */
|
||||||
|
unsigned int instrument_entry_exit : 1;
|
||||||
|
|
||||||
|
/* Nonzero if memory access checking be enabled in the current function. */
|
||||||
|
unsigned int check_memory_usage : 1;
|
||||||
|
|
||||||
|
/* Nonzero if stack limit checking should be enabled in the current
|
||||||
|
function. */
|
||||||
|
unsigned int limit_stack : 1;
|
||||||
|
|
||||||
|
/* Nonzero if current function uses varargs.h or equivalent.
|
||||||
|
Zero for functions that use stdarg.h. */
|
||||||
|
unsigned int varargs : 1;
|
||||||
|
|
||||||
|
/* Nonzero if current function uses stdarg.h or equivalent.
|
||||||
|
Zero for functions that use varargs.h. */
|
||||||
|
unsigned int stdarg : 1;
|
||||||
|
|
||||||
|
/* Nonzero if this function is being processed in function-at-a-time
|
||||||
|
mode. In other words, if all tree structure for this function,
|
||||||
|
including the BLOCK tree, is created before RTL generation
|
||||||
|
commences. */
|
||||||
|
unsigned int x_whole_function_mode_p : 1;
|
||||||
|
|
||||||
|
/* Nonzero if the back-end should not keep track of expressions that
|
||||||
|
determine the size of variable-sized objects. Normally, such
|
||||||
|
expressions are saved away, and then expanded when the next
|
||||||
|
function is started. For example, if a parameter has a
|
||||||
|
variable-sized type, then the size of the parameter is computed
|
||||||
|
when the function body is entered. However, some front-ends do
|
||||||
|
not desire this behavior. */
|
||||||
|
unsigned int x_dont_save_pending_sizes_p : 1;
|
||||||
|
|
||||||
|
/* Nonzero if the current function uses the constant pool. */
|
||||||
|
unsigned int uses_const_pool : 1;
|
||||||
|
|
||||||
|
/* Nonzero if the current function uses pic_offset_table_rtx. */
|
||||||
|
unsigned int uses_pic_offset_table : 1;
|
||||||
|
|
||||||
|
/* Nonzero if the current function needs an lsda for exception handling. */
|
||||||
|
unsigned int uses_eh_lsda : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The function currently being compiled. */
|
/* The function currently being compiled. */
|
||||||
|
|
Loading…
Add table
Reference in a new issue