GCC Middle and Back End API Reference
cgraph_edge Struct Reference

#include <cgraph.h>

Collaboration diagram for cgraph_edge:

Data Fields

gcov_type count
struct cgraph_nodecaller
struct cgraph_nodecallee
struct cgraph_edgeprev_caller
struct cgraph_edgenext_caller
struct cgraph_edgeprev_callee
struct cgraph_edgenext_callee
gimple call_stmt
struct cgraph_indirect_call_infoindirect_info
PTR aux
cgraph_inline_failed_t inline_failed
unsigned int lto_stmt_uid
int frequency
int uid
unsigned int indirect_inlining_edge: 1
unsigned int indirect_unknown_callee: 1
unsigned int call_stmt_cannot_inline_p: 1
unsigned int can_throw_external: 1
unsigned int speculative: 1

Field Documentation

PTR cgraph_edge::aux
unsigned int cgraph_edge::call_stmt_cannot_inline_p
     Whether this edge is still a dangling  
     True if the corresponding CALL stmt cannot be inlined.  

Referenced by cgraph_clone_edge().

unsigned int cgraph_edge::can_throw_external
     Can this call throw externally?  

Referenced by cgraph_clone_edge().

int cgraph_edge::frequency
     Expected frequency of executions within the function.
     When set to CGRAPH_FREQ_BASE, the edge is expected to be called once
     per function call.  The range is 0 to CGRAPH_FREQ_MAX.  

Referenced by cgraph_can_remove_if_no_direct_calls_and_refs_p(), cgraph_clone_edge(), cgraph_edge_cannot_lead_to_return(), cgraph_maybe_hot_edge_p(), clone_inlined_nodes(), copy_static_chain(), initialize_growth_caches(), remap_predicate(), update_call_edge_frequencies(), update_noncloned_frequencies(), and want_inline_self_recursive_call_p().

unsigned int cgraph_edge::indirect_inlining_edge
     Whether this edge was made direct by indirect inlining.  

Referenced by cgraph_clone_edge(), and cgraph_release_function_body().

unsigned int cgraph_edge::indirect_unknown_callee
     Whether this edge describes an indirect call with an undetermined

Referenced by cgraph_allocate_init_indirect_info(), cgraph_clone_edge(), cgraph_for_node_and_aliases(), cgraph_set_edge_callee(), and lto_symtab_encoder_in_partition_p().

cgraph_inline_failed_t cgraph_edge::inline_failed
     When equal to CIF_OK, inline this call.  Otherwise, points to the
     explanation why function was not inlined.  

Referenced by cgraph_clone_edge(), do_estimate_edge_time(), num_calls(), remap_predicate(), replace_locals_op(), update_noncloned_frequencies(), and want_inline_small_function_p().

unsigned int cgraph_edge::lto_stmt_uid
     The stmt_uid of call_stmt.  This is used by LTO to recover the call_stmt
     when the function is serialized in.  

Referenced by cgraph_clone_edge(), cgraph_set_edge_callee(), input_ssa_names(), ipa_free_all_edge_args(), and update_call_expr().

struct cgraph_edge* cgraph_edge::prev_callee

Referenced by cgraph_create_edge_1().

struct cgraph_edge* cgraph_edge::prev_caller

Referenced by cgraph_create_edge_1().

unsigned int cgraph_edge::speculative
     Edges with SPECULATIVE flag represents indirect calls that was
     speculatively turned into direct (i.e. by profile feedback).
     The final code sequence will have form:

     if (call_target == expected_fn)
       expected_fn ();
       call_target ();

     Every speculative call is represented by three components attached
     to a same call statement:
     1) a direct call (to expected_fn)
     2) an indirect call (to call_target)
     3) a IPA_REF_ADDR refrence to expected_fn.

     Optimizers may later redirect direct call to clone, so 1) and 3)
     do not need to necesarily agree with destination.  

Referenced by add_new_edges_to_heap(), cgraph_clone_edge(), and cgraph_set_edge_callee().

int cgraph_edge::uid
     Unique id of the edge.  

Referenced by cgraph_create_indirect_edge().

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