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(), and new_omp_region().

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

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 new_omp_context(), and 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: