GCC Middle and Back End API Reference
copy_body_data Struct Reference

#include <tree-inline.h>

Collaboration diagram for copy_body_data:

Data Fields

tree src_fn
tree dst_fn
struct cgraph_nodesrc_node
struct cgraph_nodedst_node
struct functionsrc_cfun
tree retvar
struct pointer_map_tdecl_map
tree(* copy_decl )(tree, struct copy_body_data *)
tree block
gimple gimple_call
int eh_lp_nr
struct pointer_map_teh_map
enum copy_body_cge_which transform_call_graph_edges
bool transform_new_cfg
bool transform_return_to_modify
bool transform_parameter
bool regimplify
bool do_not_unshare
int remapping_type_depth
void(* transform_lang_insert_block )(tree)
struct pointer_set_tstatements_to_fold
basic_block entry_bb
bitmap blocks_to_copy
vec< gimpledebug_stmts
struct pointer_map_tdebug_map
bool remap_var_for_cilk

Detailed Description

   Data required for function body duplication.  

Field Documentation

tree copy_body_data::block
     Current BLOCK.  

Referenced by init_inline_once().

bitmap copy_body_data::blocks_to_copy
     For partial function versioning, bitmap of bbs to be copied,
     otherwise NULL.  

Referenced by remap_decl_1().

tree(* copy_body_data::copy_decl)(tree, struct copy_body_data *)
     Create a new decl to replace DECL in the destination function.  
struct pointer_map_t* copy_body_data::debug_map
     A map from local declarations in the inlined function to
     equivalents in the function into which it is being inlined, where
     the originals have been mapped to a value rather than to a
vec<gimple> copy_body_data::debug_stmts
     Debug statements that need processing.  
struct pointer_map_t* copy_body_data::decl_map
     The map from local declarations in the inlined function to
     equivalents in the function into which it is being inlined.  

Referenced by remap_ssa_name().

bool copy_body_data::do_not_unshare
     True if trees should not be unshared.  
tree copy_body_data::dst_fn
     FUNCTION_DECL for function being inlined into, or in general
     the destination function receiving the new trees.  
struct cgraph_node* copy_body_data::dst_node
     Callgraph node of the destination function.  

Referenced by copy_gimple_seq_and_replace_locals(), and replace_locals_op().

int copy_body_data::eh_lp_nr
     Exception landing pad the inlined call lies in.  
struct pointer_map_t* copy_body_data::eh_map
     Maps region and landing pad structures from the function being copied
     to duplicates created within the function we inline into.  
basic_block copy_body_data::entry_bb
     Entry basic block to currently copied body.  

Referenced by remap_ssa_name().

gimple copy_body_data::gimple_call
     GIMPLE_CALL if va arg parameter packs should be expanded or NULL
     is not.  
bool copy_body_data::regimplify
     True if this statement will need to be regimplified.  
bool copy_body_data::remap_var_for_cilk
     Cilk keywords currently need to replace some variables that
     ordinary nested functions do not.  
int copy_body_data::remapping_type_depth
     > 0 if we are remapping a type currently.  
tree copy_body_data::retvar
     The VAR_DECL for the return value.  
struct function* copy_body_data::src_cfun
     struct function for function being inlined.  Usually this is the same
     as DECL_STRUCT_FUNCTION (src_fn), but can be different if saved_cfg
     and saved_eh are in use.  
tree copy_body_data::src_fn
     FUNCTION_DECL for function being inlined, or in general the
     source function providing the original trees.  

Referenced by remap_type().

struct cgraph_node* copy_body_data::src_node
     Callgraph node of the source function.  
struct pointer_set_t* copy_body_data::statements_to_fold
     Statements that might be possibly folded.  
enum copy_body_cge_which copy_body_data::transform_call_graph_edges
     We use the same mechanism do all sorts of different things.  Rather
     than enumerating the different cases, we categorize the behavior
     in the various situations.  
     What to do with call graph edges.  

Referenced by replace_locals_op().

void(* copy_body_data::transform_lang_insert_block)(tree)
     A function to be called when duplicating BLOCK nodes.  
bool copy_body_data::transform_new_cfg
     True if a new CFG should be created.  False for inlining, true for
     everything else.  
bool copy_body_data::transform_parameter
     True if the parameters of the source function are transformed.
     Only true for inlining.  
bool copy_body_data::transform_return_to_modify
     True if RETURN_EXPRs should be transformed to just the contained
     MODIFY_EXPR.  The branch semantics of the return will be handled
     by manipulating the CFG rather than a statement.  

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