GCC Middle and Back End API Reference
ipcp_transformation Struct Reference

#include <ipa-prop.h>

Collaboration diagram for ipcp_transformation:

Public Member Functions

 ipcp_transformation ()
 
 ~ipcp_transformation ()
 
int get_param_index (const_tree fndecl, const_tree param) const
 
void maybe_create_parm_idx_map (tree fndecl)
 
template<typename pred_function >
void remove_argaggs_if (pred_function &&predicate)
 

Data Fields

vec< ipa_argagg_value, va_gc > * m_agg_values
 
vec< ipa_vr, va_gc > * m_vr
 
vec< ipa_uid_to_idx_map_elt, va_gc > * m_uid_to_idx
 

Detailed Description

Structure holding information for the transformation phase of IPA-CP.   

Constructor & Destructor Documentation

◆ ipcp_transformation()

ipcp_transformation::ipcp_transformation ( )
inline

◆ ~ipcp_transformation()

ipcp_transformation::~ipcp_transformation ( )
inline

References m_agg_values, m_vr, and vec_free().

Member Function Documentation

◆ get_param_index()

int ipcp_transformation::get_param_index ( const_tree fndecl,
const_tree param ) const
Given PARAM which must be a parameter of function FNDECL described by THIS,
return its index in the DECL_ARGUMENTS chain, using a pre-computed
DECL_UID-sorted vector if available (which is pre-computed only if there are
many parameters).  Can return -1 if param is static chain not represented
among DECL_ARGUMENTS.  

References DECL_ARGUMENTS, DECL_CHAIN, DECL_STATIC_CHAIN, DECL_UID, gcc_assert, ggc_alloc(), ipa_uid_to_idx_map_elt::index, m_uid_to_idx, TREE_CODE, and ipa_uid_to_idx_map_elt::uid.

◆ maybe_create_parm_idx_map()

void ipcp_transformation::maybe_create_parm_idx_map ( tree fndecl)
Assuming THIS describes FNDECL and it has sufficiently many parameters to
justify the overhead, create a DECL_UID-sorted vector to speed up mapping
from parameters to their indices in DECL_ARGUMENTS chain.   

References compare_uids(), count_formal_params(), DECL_ARGUMENTS, DECL_CHAIN, DECL_UID, ipa_uid_to_idx_map_elt::index, m_uid_to_idx, NULL, ipa_uid_to_idx_map_elt::uid, and vec_safe_reserve().

◆ remove_argaggs_if()

template<typename pred_function >
void ipcp_transformation::remove_argaggs_if ( pred_function && predicate)
inline

Field Documentation

◆ m_agg_values

vec<ipa_argagg_value, va_gc>* ipcp_transformation::m_agg_values

◆ m_uid_to_idx

vec<ipa_uid_to_idx_map_elt, va_gc>* ipcp_transformation::m_uid_to_idx

◆ m_vr

vec<ipa_vr, va_gc>* ipcp_transformation::m_vr

Referenced by ~ipcp_transformation().


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