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

◆ ~ipcp_transformation()

ipcp_transformation::~ipcp_transformation ( )

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

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

Referenced by ipcp_get_aggregate_const(), and ipcp_get_parm_bits().

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

Referenced by ipcp_transform_function().

◆ remove_argaggs_if()

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

Field Documentation

◆ m_agg_values

◆ m_uid_to_idx

vec<ipa_uid_to_idx_map_elt, va_gc>* ipcp_transformation::m_uid_to_idx

◆ m_vr

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