GCC Middle and Back End API Reference
ipa_argagg_value_list Class Reference

#include <ipa-prop.h>

Collaboration diagram for ipa_argagg_value_list:

Public Member Functions

 ipa_argagg_value_list ()=delete
 
 ipa_argagg_value_list (const vec< ipa_argagg_value, va_gc > *values)
 
 ipa_argagg_value_list (const vec< ipa_argagg_value > *values)
 
 ipa_argagg_value_list (const ipa_auto_call_arg_values *aavals)
 
 ipa_argagg_value_list (const ipa_call_arg_values *gavals)
 
 ipa_argagg_value_list (const ipcp_transformation *tinfo)
 
tree get_value (int index, unsigned unit_offset, bool by_ref) const
 
tree get_value (int index, unsigned unit_offset) const
 
const ipa_argagg_valueget_elt (int index, unsigned unit_offset) const
 
const ipa_argagg_valueget_elt_for_index (int index) const
 
bool value_for_index_p (int index) const
 
bool superset_of_p (const ipa_argagg_value_list &other) const
 
void push_adjusted_values (unsigned src_index, unsigned dest_index, unsigned unit_delta, vec< ipa_argagg_value > *res) const
 
void dump (FILE *f)
 
void DEBUG_FUNCTION debug ()
 

Data Fields

array_slice< const ipa_argagg_valuem_elts
 

Detailed Description

A view into a sorted list of aggregate values in a particular context, be it
a call or the aggregate constants that a node is specialized for.  The
actual data is stored in the vector this has been constructed from.   

Constructor & Destructor Documentation

◆ ipa_argagg_value_list() [1/6]

ipa_argagg_value_list::ipa_argagg_value_list ( )
delete

◆ ipa_argagg_value_list() [2/6]

ipa_argagg_value_list::ipa_argagg_value_list ( const vec< ipa_argagg_value, va_gc > * values)
inline

◆ ipa_argagg_value_list() [3/6]

ipa_argagg_value_list::ipa_argagg_value_list ( const vec< ipa_argagg_value > * values)
inline

◆ ipa_argagg_value_list() [4/6]

ipa_argagg_value_list::ipa_argagg_value_list ( const ipa_auto_call_arg_values * aavals)
inline

◆ ipa_argagg_value_list() [5/6]

ipa_argagg_value_list::ipa_argagg_value_list ( const ipa_call_arg_values * gavals)
inline

◆ ipa_argagg_value_list() [6/6]

ipa_argagg_value_list::ipa_argagg_value_list ( const ipcp_transformation * tinfo)
inline

Member Function Documentation

◆ debug()

void ipa_argagg_value_list::debug ( )
Dump the contents of the list to stderr.   

References dump().

◆ dump()

void ipa_argagg_value_list::dump ( FILE * f)
Dump the contents of the list to FILE.   

References m_elts, and print_generic_expr().

Referenced by create_specialized_node(), debug(), and ipcp_transform_function().

◆ get_elt()

const ipa_argagg_value * ipa_argagg_value_list::get_elt ( int index,
unsigned unit_offset ) const
Return the item describing a constant stored for INDEX at UNIT_OFFSET or
NULL if there is no such constant.   

References array_slice< T >::begin(), array_slice< T >::end(), gcc_assert, ipa_argagg_value::index, m_elts, NULL, and ipa_argagg_value::unit_offset.

Referenced by get_value(), get_value(), and ipcp_get_aggregate_const().

◆ get_elt_for_index()

const ipa_argagg_value * ipa_argagg_value_list::get_elt_for_index ( int index) const
Return the first item describing a constant stored for parameter with INDEX,
regardless of offset or reference, or NULL if there is no such constant.   

References array_slice< T >::begin(), array_slice< T >::end(), ipa_argagg_value::index, and m_elts.

Referenced by push_adjusted_values(), and value_for_index_p().

◆ get_value() [1/2]

tree ipa_argagg_value_list::get_value ( int index,
unsigned unit_offset ) const
Return the aggregate constant stored for INDEX at UNIT_OFFSET, not
performing any check of whether value is passed by reference, or NULL_TREE
if there is no such constant.   

References get_elt(), NULL_TREE, and ipa_argagg_value::value.

◆ get_value() [2/2]

tree ipa_argagg_value_list::get_value ( int index,
unsigned unit_offset,
bool by_ref ) const
Return the aggregate constant stored for INDEX at UNIT_OFFSET, if it is
passed by reference or not according to BY_REF, or NULL_TREE if there is
no such constant.   

References ipa_argagg_value::by_ref, get_elt(), NULL_TREE, and ipa_argagg_value::value.

Referenced by ipcp_modif_dom_walker::before_dom_children(), cgraph_edge_brings_value_p(), evaluate_conditions_for_known_args(), ipa_agg_value_from_jfunc(), ipa_get_indirect_edge_target_1(), ipcp_val_agg_replacement_ok_p(), and push_agg_values_for_index_from_edge().

◆ push_adjusted_values()

void ipa_argagg_value_list::push_adjusted_values ( unsigned src_index,
unsigned dest_index,
unsigned unit_delta,
vec< ipa_argagg_value > * res ) const
Push all items in this list that describe parameter SRC_INDEX into RES as
ones describing DST_INDEX while subtracting UNIT_DELTA from their unit
offsets but skip those which would end up with a negative offset.   

References ipa_argagg_value::by_ref, array_slice< T >::end(), gcc_assert, gcc_checking_assert, get_elt_for_index(), ipa_argagg_value::index, ipa_argagg_value::killed, m_elts, ipa_argagg_value::unit_offset, and ipa_argagg_value::value.

Referenced by push_agg_values_for_index_from_edge().

◆ superset_of_p()

bool ipa_argagg_value_list::superset_of_p ( const ipa_argagg_value_list & other) const
Return true if all elements present in OTHER are also present in this
list.   

References i, m_elts, array_slice< T >::size(), and values_equal_for_ipcp_p().

Referenced by cgraph_edge_brings_all_agg_vals_for_node().

◆ value_for_index_p()

bool ipa_argagg_value_list::value_for_index_p ( int index) const
inline

Field Documentation

◆ m_elts


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