GCC Middle and Back End API Reference
function Struct Reference

#include <function.h>

Collaboration diagram for function:

Data Fields

struct eh_statuseh
struct control_flow_graphcfg
gimple_seq gimple_body
struct gimple_dfgimple_df
struct loopsx_current_loops
struct stack_usagesu
htab_t value_histograms
tree decl
tree static_chain_decl
tree nonlocal_goto_save_area
vec< tree, va_gc > * local_decls
tree cilk_frame_decl
struct machine_function * machine
struct language_function * language
htab_t used_types_hash
struct dw_fde_structfde
int last_stmt_uid
int funcdef_no
location_t function_start_locus
location_t function_end_locus
unsigned int curr_properties
unsigned int last_verified
const char * cannot_be_copied_reason
unsigned int va_list_gpr_size: 8
unsigned int va_list_fpr_size: 8
unsigned int calls_setjmp: 1
unsigned int calls_alloca: 1
unsigned int is_cilk_function: 1
unsigned int calls_cilk_spawn: 1
unsigned int has_nonlocal_label: 1
unsigned int cannot_be_copied_set: 1
unsigned int stdarg: 1
unsigned int after_inlining: 1
unsigned int always_inline_functions_inlined: 1
unsigned int can_throw_non_call_exceptions: 1
unsigned int can_delete_dead_exceptions: 1
unsigned int returns_struct: 1
unsigned int returns_pcc_struct: 1
unsigned int has_local_explicit_reg_vars: 1
unsigned int is_thunk: 1
unsigned int has_force_vect_loops: 1
unsigned int has_simduid_loops: 1

Detailed Description

   This structure can save all the important global and static variables
   describing the status of the current function.  

Field Documentation

unsigned int function::after_inlining
unsigned int function::always_inline_functions_inlined
unsigned int function::calls_alloca
     Nonzero if function being compiled can call alloca,
     either as a subroutine or builtin.  

Referenced by discard_pending_stack_adjust(), and suitable_for_tail_opt_p().

unsigned int function::calls_cilk_spawn
     Nonzero if this is a Cilk function that spawns. 
unsigned int function::calls_setjmp
unsigned int function::can_delete_dead_exceptions
     Nonzero if instructions that may throw exceptions but don't otherwise
     contribute to the execution of the program can be deleted.  
unsigned int function::can_throw_non_call_exceptions
     Nonzero if function being compiled can throw synchronous non-call
     exceptions.  

Referenced by calculate_bb_reg_pressure(), remove_unreachable_eh_regions(), special_builtin_state(), store_killed_before(), and tree_could_trap_p().

const char* function::cannot_be_copied_reason
     Non-null if the function does something that would prevent it from
     being copied; this applies to both versioning and inlining.  Set to
     a string describing the reason for failure.  
unsigned int function::cannot_be_copied_set
     Nonzero if we've set cannot_be_copied_reason.  I.e. if
     (cannot_be_copied_set && !cannot_be_copied_reason), the function
     can in fact be copied.  
struct control_flow_graph* function::cfg
     The control flow graph for this function.  

Referenced by gimple_call_arg_flags(), and replace_ssa_name().

tree function::cilk_frame_decl
     In a Cilk function, the VAR_DECL for the frame descriptor. 
unsigned int function::curr_properties
     Properties used by the pass manager.  

Referenced by copy_decl_maybe_to_var(), and verify_curr_properties().

tree function::decl
struct dw_fde_struct* function::fde
     Dwarf2 Frame Description Entry, containing the Call Frame Instructions
     used for unwinding.  Only set when either dwarf2 unwinding or dwarf2
     debugging is enabled.  

Referenced by dwarf2out_frame_debug_cfa_window_save().

int function::funcdef_no
     Function sequence number for profiling, debugging, etc.  
location_t function::function_end_locus
     Line number of the end of the function.  

Referenced by gimple_purge_dead_eh_edges().

location_t function::function_start_locus
     Line number of the start of the function for debugging purposes.  

Referenced by instrument_memory_accesses().

gimple_seq function::gimple_body
     GIMPLE body for this function.  
unsigned int function::has_force_vect_loops
     Nonzero if the current function contains any loops with
     loop->force_vect set.  

Referenced by tree_loop_vectorize().

unsigned int function::has_local_explicit_reg_vars
     Nonzero if this function has local DECL_HARD_REGISTER variables.
     In this case code motion has to be done more carefully.  
unsigned int function::has_nonlocal_label
     Nonzero if function being compiled receives nonlocal gotos
     from nested functions.  

Referenced by compute_hash_table(), compute_uninit_opnds_pos(), find_case_label_for_value(), and process_bb_node_lives().

unsigned int function::has_simduid_loops
     Nonzero if the current function contains any loops with
     nonzero value in loop->simduid.  

Referenced by vectorize_loops().

unsigned int function::is_cilk_function
     This will indicate whether a function is a cilk function 

Referenced by get_frame_arg().

unsigned int function::is_thunk
     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.  

Referenced by default_ctor_section_asm_out_constructor(), and profile_function().

struct language_function* function::language
     Language-specific code can use this to store whatever it likes.  
int function::last_stmt_uid
     Last statement uid.  
unsigned int function::last_verified
vec<tree, va_gc>* function::local_decls
     Vector of function local variables, functions, types and constants.  
struct machine_function* function::machine
     For md files.  
     tm.h can use this to store whatever it likes.  
tree function::nonlocal_goto_save_area
     An expression that contains the non-local goto save area.  The first
     word is the saved frame pointer and the second is the saved stack
     pointer.  
unsigned int function::returns_pcc_struct
     Nonzero if function being compiled needs to
     return the address of where it has put a structure value.  

Referenced by copy_decl_no_change(), and set_cfun().

unsigned int function::returns_struct
     Fields below this point are not set for abstract functions; see
     allocate_struct_function.  
     Nonzero if function being compiled needs to be given an address
     where the value should be stored.  

Referenced by copy_decl_no_change().

tree function::static_chain_decl
     A PARM_DECL that should contain the static chain for this function.
     It will be initialized at the beginning of the function.  

Referenced by allocate_struct_function(), create_function_info_for(), and stmt_overflow_infinity().

unsigned int function::stdarg
     Nonzero if current function uses stdarg.h or equivalent.  
struct stack_usage* function::su
     The stack usage of this function.  

Referenced by blocks_nreverse().

htab_t function::used_types_hash
     Used types hash table.  
unsigned int function::va_list_fpr_size
     Number of units of floating point registers that need saving in stdarg
     function.  
unsigned int function::va_list_gpr_size
     Collected bit flags.  
     Number of units of general registers that need saving in stdarg
     function.  What unit is depends on the backend, either it is number
     of bytes, or it can be number of registers.  
htab_t function::value_histograms
     Value histograms attached to particular statements.  
struct loops* function::x_current_loops
     The loops in this function.  

The documentation for this struct was generated from the following file: