+
+ /* How commonly executed the function is. Initialized during branch
+ probabilities pass. */
+ enum function_frequency {
+ /* This function most likely won't be executed at all.
+ (set only when profile feedback is available). */
+ FUNCTION_FREQUENCY_UNLIKELY_EXECUTED,
+ /* The default value. */
+ FUNCTION_FREQUENCY_NORMAL,
+ /* Optimize this function hard
+ (set only when profile feedback is available). */
+ FUNCTION_FREQUENCY_HOT
+ } function_frequency;
+
+ /* Maximal number of entities in the single jumptable. Used to estimate
+ final flowgraph size. */
+ int max_jumptable_ents;
+
+ /* UIDs for LABEL_DECLs. */
+ int last_label_uid;
+
+ /* Line number of the end of the function. */
+ location_t function_end_locus;
+
+ /* Array mapping insn uids to blocks. */
+ struct varray_head_tag *ib_boundaries_block;
+
+ /* The variables unexpanded so far. */
+ tree unexpanded_var_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 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 the function calls __builtin_eh_return. */
+ unsigned int calls_eh_return : 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, i.e., a lightweight
+ function implemented by the output_mi_thunk hook) that just
+ adjusts one of its arguments and forwards to another
+ function. */
+ unsigned int is_thunk : 1;
+
+ /* This bit is used by the exception handling logic. It is set if all
+ calls (if any) are sibling calls. Such functions do not have to
+ have EH tables generated, as they cannot throw. A call to such a
+ function, however, should be treated as throwing if any of its callees
+ can throw. */
+ unsigned int all_throwers_are_sibcalls : 1;
+
+ /* Nonzero if instrumentation calls for function entry and exit should be
+ generated. */
+ unsigned int instrument_entry_exit : 1;
+
+ /* Nonzero if profiling code should be generated. */
+ unsigned int profile : 1;
+
+ /* Nonzero if stack limit checking should be enabled in the current
+ function. */
+ unsigned int limit_stack : 1;
+
+ /* Nonzero if current function uses stdarg.h or equivalent. */
+ unsigned int stdarg : 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;
+
+ /* Nonzero if code to initialize arg_pointer_save_area has been emitted. */
+ unsigned int arg_pointer_save_area_init : 1;