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.

unsigned int function::calls_cilk_spawn

Nonzero if this is a Cilk function that spawns.

unsigned int function::calls_setjmp

Nonzero if function being compiled can call 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.

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.

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.

tree function::decl

For function.c. Points to the FUNCTION_DECL of this function.

Referenced by push_function_context().

struct eh_status* function::eh
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.

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.

location_t function::function_start_locus

Line number of the start of the function for debugging purposes.

gimple_seq function::gimple_body

GIMPLE body for this function.

struct gimple_df* function::gimple_df

SSA and dataflow information.

unsigned int function::has_force_vect_loops

Nonzero if the current function contains any loops with loop->force_vect set.

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.

unsigned int function::has_simduid_loops

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

unsigned int function::is_cilk_function

This will indicate whether a function is a cilk function

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.

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 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.

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().

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: